Snowflake Driver v1.11.0¶
Driver Version v1.11.0 Release Date 2026-06-18 Tested With Snowflake 10
This driver provides access to Snowflake , a cloud-based data warehouse platform.
Installation & Quickstart¶
The driver can be installed with dbc :
dbc install snowflake
Pre-requisites¶
Using the Snowflake driver requires a Snowflake account and authentication. See Getting Started With Snowflake for instructions.
Connecting¶
To connect, replace the Snowflake options below with the appropriate values for your situation and run the following:
from adbc_driver_manager import dbapi
conn = dbapi.connect(
driver="snowflake",
db_kwargs={
"username": "USER",
### for username/password authentication: ###
"adbc.snowflake.sql.auth_type": "auth_snowflake",
"password": "PASS",
### for JWT authentication: ###
#"adbc.snowflake.sql.auth_type": "auth_jwt",
#"adbc.snowflake.sql.client_option.jwt_private_key": "/path/to/rsa_key.p8",
"adbc.snowflake.sql.account": "ACCOUNT-IDENT",
"adbc.snowflake.sql.db": "SNOWFLAKE_SAMPLE_DATA",
"adbc.snowflake.sql.schema": "TPCH_SF1",
"adbc.snowflake.sql.warehouse": "MY_WAREHOUSE",
"adbc.snowflake.sql.role": "MY_ROLE"
}
)
Note: The example above is for Python using the adbc-driver-manager package but the process will be similar for other driver managers. See adbc-quickstarts .
The driver supports connecting with individual options or connection strings.
Connection String Format¶
Snowflake URI syntax:
snowflake://user[:password]@host[:port]/database[/schema][?param1=value1¶m2=value2]
This follows the Go Snowflake Driver Connection String format with the addition of the snowflake:// scheme.
Components:
scheme:snowflake://(required)user/password: (optional) For username/password authenticationhost: (required) The Snowflake account identifier string (e.g., myorg-account1) OR the full hostname (e.g., private.network.com ). If a full hostname is used, the actual Snowflake account identifier must be provided separately via the account query parameter (see example 3).port: The port is optional and defaults to 443.database: Database name (required)schema: Schema name (optional)Query Parameters: Additional configuration options. For a complete list of parameters, see the Go Snowflake Driver Connection Parameters
Note
Reserved characters in URI elements must be URI-encoded. For example, @ becomes %40.
Examples:
snowflake://jane.doe:MyS3cr3t!@myorg-account1/ANALYTICS_DB/SALES_DATA?warehouse=WH_XL&role=ANALYSTsnowflake://service_user@myorg-account2/RAW_DATA_LAKE?authenticator=oauth&application=ADBC_APPsnowflake://sys_admin@private.network.com:443/OPS_MONITOR/DBA?account=vpc-id-1234&insecureMode=true&client_session_keep_alive=true(Uses full hostname, requires explicit account parameter)
Feature & Type Support¶
| Feature | Snowflake | |
|---|---|---|
| Bulk Ingestion | Create | ✅ |
| Append | ✅ | |
| Create/Append | ✅ | |
| Replace | ✅ | |
| Temporary Table | ❌ | |
| Target Catalog | ✅ | |
| Target Schema | ✅ | |
| Non-nullable fields are marked NOT NULL | ❌ | |
| Catalog (GetObjects) | depth=catalogs | ✅ |
| depth=db_schemas | ✅ | |
| depth=tables | ✅ | |
| depth=columns (all) | ✅ | |
| Get Parameter Schema | ❌ | |
| Get Table Schema | ✅ | |
| Prepared Statements | ✅ | |
| Transactions | ✅ | |
Types¶
Database to Arrow¶
| Database Type | Snowflake |
|---|---|
|
ARRAY |
extension<arrow.json> |
|
BIGINT |
int64 |
|
BOOLEAN |
bool |
|
DATE |
date32[day] |
|
DOUBLE PRECISION |
double |
|
GEOGRAPHY (geography_output_format = EWKB) |
extension<geoarrow.wkb> |
|
GEOGRAPHY (geography_output_format = GEOJSON) |
string |
|
GEOMETRY (geometry_output_format = EWKB) |
extension<geoarrow.wkb> |
|
GEOMETRY (geometry_output_format = GEOJSON) |
string [1] |
|
INT |
int64 |
|
NUMERIC |
double |
|
NUMERIC (use_high_precision = false) |
int64 [2] |
|
NUMERIC (use_high_precision = true) |
decimal128 |
|
REAL |
double |
|
SMALLINT |
int64 |
|
TIME |
time64[ns] |
|
TIMESTAMP |
timestamp[us] |
|
TIMESTAMP WITH TIME ZONE |
timestamp[us] (with time zone) |
|
VARBINARY |
binary |
|
VARCHAR |
string |
Arrow to Database¶
| Arrow Type | Snowflake Type | |
|---|---|---|
| Bind | Ingest | |
|
binary |
BINARY |
|
|
binary_view |
BINARY |
❌ |
|
bool |
BOOLEAN |
|
|
date32[day] |
DATE |
|
|
decimal128 |
NUMERIC |
(NA/not tested) |
|
double |
DOUBLE PRECISION |
REAL, NUMERIC, DOUBLE PRECISION |
|
extension<geoarrow.wkb> |
(NA/not tested) |
GEOMETRY |
|
fixed_size_binary |
BINARY |
BINARY(n) |
|
float |
REAL |
(NA/not tested) |
|
halffloat |
REAL |
(NA/not tested) |
|
int16 |
SMALLINT |
(NA/not tested) |
|
int32 |
INT |
(NA/not tested) |
|
int64 |
BIGINT |
SMALLINT, INT, BIGINT |
|
large_binary |
BINARY |
|
|
large_list<value: int32> |
(NA/not tested) |
ARRAY |
|
large_string |
TEXT |
STRING |
|
list |
(NA/not tested) |
ARRAY |
|
string |
VARCHAR |
STRING |
|
string_view |
VARCHAR |
❌ |
|
time32[ms] |
TIME |
TIME(3) |
|
time32[s] |
TIME |
TIME(0) |
|
time64[ns] |
TIME |
TIME(9) |
|
time64[us] |
TIME |
TIME(6) |
|
timestamp[ms] |
TIMESTAMP_NTZ(3) |
|
|
timestamp[ms] (with time zone) |
TIMESTAMP_LTZ(3) |
|
|
timestamp[ns] |
TIMESTAMP_NTZ(9) |
|
|
timestamp[ns] (with time zone) |
TIMESTAMP_LTZ(9) |
|
|
timestamp[s] |
TIMESTAMP_NTZ(0) |
|
|
timestamp[s] (with time zone) |
TIMESTAMP_LTZ(0) |
|
|
timestamp[us] |
TIMESTAMP_NTZ(6) |
|
|
timestamp[us] (with time zone) |
TIMESTAMP_LTZ(6) |
|
Options¶
Connection Options¶
adbc.snowflake.sql.accountType: string
The Snowflake account name.
adbc.snowflake.sql.auth_typeValues: (see table below). Default:
auth_snowflakeHow to authenticate to Snowflake.
Auth Method
Description
auth_snowflakeusername/password
auth_oauthOAuth
auth_ext_browseruse an external browser to access a FED and perform SSO auth
auth_oktause a native OKTA URL to perform SSO authentication on Okta
auth_jwtuse a JWT
auth_mfausername/password with MFA
auth_patuse a programmatic access token
auth_wifuse Workload Identity Federation; must specify
adbc.snowflake.sql.client_option.identity_provideradbc.snowflake.sql.client_option.app_nameType: string
The application name to report to Snowflake.
adbc.snowflake.sql.client_option.auth_tokenType: string
The auth token to use.
adbc.snowflake.sql.client_option.cache_mfa_tokenType: boolean
Whether to cache the MFA token in the OS credential manager.
adbc.snowflake.sql.client_option.client_timeoutType: duration string (e.g.
300ms,1.5s, or1m30s)Timeout for a network round trip plus reading the HTTP response. Uses Go’s
time.ParseDurationformat; negative values are treated as their absolute value.adbc.snowflake.sql.client_option.config_fileType: string (file path)
Path to the gosnowflake client configuration file used for “easy logging” (controls the driver’s log level and log output path).
adbc.snowflake.sql.client_option.disable_telemetryType: boolean. Default: false
When enabled, disables the driver’s usage telemetry by setting the
CLIENT_TELEMETRY_ENABLEDsession parameter tofalse.adbc.snowflake.sql.client_option.identity_providerValues:
AWS,AZURE,GCP, orOIDCThe Workload Identity Federation provider used to generate the identity attestation. Must be set when
adbc.snowflake.sql.auth_typeisauth_wif.adbc.snowflake.sql.client_option.jwt_expire_timeoutType: duration string (e.g.
300ms,1.5s, or1m30s)How long a generated key-pair-authentication JWT remains valid. Uses Go’s
time.ParseDurationformat; negative values are treated as their absolute value.adbc.snowflake.sql.client_option.jwt_private_keyType: string (file path)
Path to a file containing the RSA private key (PKCS#1 or PKCS#8, PEM or DER) used to sign the JWT for key-pair authentication (
auth_jwt).adbc.snowflake.sql.client_option.jwt_private_key_pkcs8_passwordType: string
Passphrase used to decrypt an encrypted PKCS#8 private key supplied via
adbc.snowflake.sql.client_option.jwt_private_key_pkcs8_value.adbc.snowflake.sql.client_option.jwt_private_key_pkcs8_valueType: string (PEM)
The RSA private key for key-pair authentication supplied inline as a PKCS#8 PEM value, instead of as a file path. If the PEM is an encrypted private key, also set
adbc.snowflake.sql.client_option.jwt_private_key_pkcs8_password.adbc.snowflake.sql.client_option.keep_session_aliveType: boolean. Default: false
When enabled, keeps the Snowflake session alive (does not log it out) after the connection is closed.
adbc.snowflake.sql.client_option.login_timeoutType: duration string (e.g.
300ms,1.5s, or1m30s)Login retry timeout, excluding network round trip and reading the HTTP response. Uses Go’s
time.ParseDurationformat; negative values are treated as their absolute value.adbc.snowflake.sql.client_option.ocsp_fail_open_modeType: boolean. Default: true (fail-open)
Controls OCSP certificate-revocation behavior. When enabled (fail-open), a revocation check that cannot complete (for example, an unreachable OCSP responder) is treated as a soft failure and the connection proceeds; when disabled (fail-closed), such a failure rejects the connection.
adbc.snowflake.sql.client_option.okta_urlType: string (URL)
The native Okta URL (for example,
https://<org>.okta.com) used for SSO whenadbc.snowflake.sql.auth_typeisauth_okta.adbc.snowflake.sql.client_option.request_timeoutType: duration string (e.g.
300ms,1.5s, or1m30s)Request retry timeout for non-login requests, excluding network round trip and reading the HTTP response. Uses Go’s
time.ParseDurationformat; negative values are treated as their absolute value.adbc.snowflake.sql.client_option.store_temp_credsType: string
Whether to cache the ID token in the OS credential manager.
adbc.snowflake.sql.client_option.tls_skip_verifyType: string
(INSECURE) do not validate the server’s TLS certificate.
adbc.snowflake.sql.client_option.tracingType: string
(Deprecated) set the log level.
adbc.snowflake.sql.dbType: string
The database name to connect to.
adbc.snowflake.sql.regionType: string
The warehouse region.
adbc.snowflake.sql.roleType: string
The role to use.
adbc.snowflake.sql.schemaType: string
The schema to connect to.
adbc.snowflake.sql.uri.hostType: string
The Snowflake host to connect to. Normally derived from the account identifier; set this only to override the host (for example, a private-link or proxy hostname).
adbc.snowflake.sql.uri.portType: int. Default: 443
The port to connect to.
adbc.snowflake.sql.uri.protocolValues:
httporhttps. Default:httpsThe protocol scheme used for connections.
adbc.snowflake.sql.warehouseType: string
The warehouse to connect to.
Options Affecting Queries¶
adbc.rpc.result_queue_sizeType: int. Default: 100
The max number of batches to buffer for each result stream. Batches are prefetched in parallel up to
adbc.snowflake.rpc.prefetch_concurrencystreams at a time.Can be set on the statement. For example:
with conn.cursor() as cur: cur.adbc_statement.set_options(**{"adbc.rpc.result_queue_size": "200"}) cur.execute("SELECT * FROM my_table")
adbc.snowflake.rpc.prefetch_concurrencyType: int. Default: 5
The max number of result streams to fetch in parallel. Each stream buffers up to
adbc.rpc.result_queue_sizebatches.Can be set on the statement.
adbc.snowflake.sql.client_option.geography_output_format
adbc.snowflake.sql.client_option.geometry_output_format
: Values: GeoJSON, EKWB. Default: GeoJSON
The format used to return geometry/geography data. The default of GeoJSON will return these columns as string columns containing JSON data. If set to EWKB, instead geoarrow.wkb extension columns will be returned with CRS metadata in the extension type.
adbc.snowflake.sql.client_option.max_timestamp_precisionValues:
nanoseconds,nanoseconds_error_on_overflow,microseconds. Default:nanosecondsThe Snowflake TIMESTAMP_LTZ, TIMESTAMP_NTZ, and TIMESTAMP_TZ types with nanosecond precision have a range greater than is possible to represent with Arrow nanosecond timestamps. This option controls what to do:
nanosecondswill simply let the value overflow,nanoseconds_error_on_overflowwill validate values and raise an error if they would overflow (at a performance cost), andmicrosecondswill truncate to microseconds, which can represent the full range.Can be set on the database.
adbc.snowflake.sql.client_option.stream_retry_enabledType: boolean. Default: false
Whether to buffer data read, retrying on failure, or directly yield the underlying result stream. If enabled, transient network failures will be retried up to a fixed number of attempts.
Can be set on the database, connection, and statement.
adbc.snowflake.sql.client_option.use_high_precisionType: boolean. Default: true
For NUMBER columns , whether to read as Arrow decimals, or as Arrow int64/float64. Note that when disabled, there is risk of data being truncated.
Can be set on the database, connection, and statement.
adbc.snowflake.statement.ingest_compression_codecValues:
uncompressed,snappy,gzip,brotli,zstd, orlz4_raw(case-insensitive). Default:snappyWhen ingesting, the compression codec to use for the Parquet files that are created and uploaded.
Can be set on the statement.
adbc.snowflake.statement.ingest_compression_levelType: int. Default: the default level for the selected codec
When ingesting, the codec-specific compression level for the Parquet files that are created. The valid range depends on the codec; some codecs (such as
snappy) ignore it.Can be set on the statement.
adbc.snowflake.statement.ingest_copy_concurrencyType: int. Default: 4
When ingesting, the max number of Parquet files to
COPY INTOin parallel.Can be set on the statement.
adbc.snowflake.statement.ingest_geo_typeValues:
geography,geometry, or empty string. Default: empty stringWhich Snowflake data type to use when ingesting columns of GeoArrow extension types (
geoarrow.wkb,geoarrow.wkt). If empty, then it will be detected: if the SRID is 4326 andedges:sphericalis set, then it will be ingested as GEOGRAPHY, else GEOMETRY. If explicitly set, the driver will use the specified type.Can be set on the statement.
adbc.snowflake.statement.ingest_target_file_sizeType: int. Default: 10 MiB
When ingesting, the approximate target size of Parquet files to create. The actual size will tend to be slightly larger; if set to 0 there is no limit.
Can be set on the statement.
adbc.snowflake.statement.ingest_upload_concurrencyType: int. Default: 8
When ingesting, the max number of Parquet files to upload in parallel.
Can be set on the statement.
adbc.snowflake.statement.ingest_use_vectorized_scannerType: boolean. Default: true
Whether to pass
USE_VECTORIZED_SCANNER=TRUEwhen ingesting data viaCOPY INTO.adbc.snowflake.statement.ingest_writer_concurrencyType: int. Default: number of vCPUs detected
When ingesting, the max number of Parquet files to write in parallel.
Can be set on the statement.
adbc.snowflake.statement.query_tagType: string. Default: (unset)
A query tag to apply to queries, which can be used for monitoring.
Can be set on the statement.
Previous Versions¶
To see documentation for previous versions of this driver, see the following: