Skip to main content
Version: v7 - alpha

Sequelize for Snowflake

danger

Our implementation of Snowflake is not integration tested against an actual database. As such, we cannot guarantee that it will work as expected, nor its stability.

We rely on the community to help us improve this dialect.

Version Compatibility

See Releases to see which versions of Snowflake are supported.

To use Sequelize with Snowflake, you need to install the @sequelize/snowflake dialect package:

npm i @sequelize/snowflake

Then use the SnowflakeDialect class as the dialect option in the Sequelize constructor:

import { Sequelize } from '@sequelize/core';
import { SnowflakeDialect } from '@sequelize/snowflake';

const sequelize = new Sequelize({
dialect: SnowflakeDialect,
accessUrl: 'https://myaccount.us-east-1.snowflakecomputing.com',
role: 'myRole',
warehouse: 'myWarehouse',
username: 'myUserName',
password: 'myPassword',
database: 'myDatabaseName',
});

Connection Options

Connection Options are used to configure a connection to the database.

The simplest way to use them is at the root of the configuration object. These options can also be used in the replication option to customize the connection for each replica, and can be modified by the beforeConnect hook on a connection-by-connection basis.

The following options are passed as-is to the snowflake-sdk package that Sequelize uses to connect to Snowflake. Please refer to the Snowflake documentation for more information about what each of these options do.

For convenience, here is an edited copy of the documentation that only includes the options that are accepted by Sequelize:

OptionDescription
accessUrlSpecifies a fully-qualified endpoint for connecting to Snowflake.
accountSnowflake Account Identifier
applicationSpecifies the name of the client application connecting to Snowflake.
authenticatorSpecifies the authenticator to use for verifying user login credentials. See the Snowflake documentation for details
clientSessionKeepAliveBy default, client connections typically time out approximately 3-4 hours after the most recent query was executed.
If the clientSessionKeepAlive option is set to true, the client’s connection to the server will be kept alive indefinitely, even if no queries are executed.
Note that the Sequelize Pool also disconnects connections if they are idle after a specified time.
clientSessionKeepAliveHeartbeatFrequencySets the frequency (interval in seconds) between heartbeat messages.
databaseThe default database to use for the session after connecting.
passwordPassword for the user for when authenticator is set to SNOWFLAKE.
privateKeySpecifies the private key (in PEM format) for key pair authentication.
privateKeyPassSpecifies the passcode to decrypt the private key file, if the file is encrypted.
privateKeyPathSpecifies the local path to the private key file (e.g. rsa_key.p8).
roleThe default security role to use for the session after connecting.
timeoutNumber of milliseconds to keep the connection alive with no response. Default: 60000 (1 minute).
tokenSpecifies the OAuth token to use for authentication for when authenticator is set to OAUTH.
usernameThe login name for your Snowflake user or your Identity Provider.
warehouseThe default virtual warehouse to use for the session after connecting. Used for performing queries, loading data, etc.

Other Snowflake Options

The following options are also available for Snowflake:

OptionDescription
showWarningsIf true, warnings produced during the execution of a query will be sent to the logging callback. Default is false.