Upload data from an internal storage file to a Snowflake stage.
Make sure that the stageName follows the naming convention of @databaseName.schemaName.%stageOrTableName. For usage examples, check the Blueprints tagged with Snowflake.
type: "io.kestra.plugin.jdbc.snowflake.upload"id: snowflake_upload
namespace: company.team
tasks:
- id: upload
type: io.kestra.plugin.jdbc.snowflake.Upload
url: jdbc:snowflake://<account_identifier>.snowflakecomputing.com
username: "{{ secret('SNOWFLAKE_USERNAME') }}"
password: "{{ secret('SNOWFLAKE_PASSWORD') }}"
from: '{{ outputs.extract.uri }}'
fileName: data.csv
prefix: raw
stageName: "@demo_db.public.%myStage"
Destination file name to use.
Path to the file to load to Snowflake stage.
The prefix under which the file will be uploaded to Snowflake stage.
Snowflake stage name.
This can either be a stage name or a table name.
The JDBC URL to connect to the database.
trueWhether to compress the file or not before uploading it to the Snowflake stage.
Specifies the default database to use once connected.
The specified database should be an existing database for which the specified default role has privileges.
If you need to use a different database after connecting, execute the USE DATABASE command.
The database user's password.
Private key used for Snowflake key-pair authentication.
Kestra supports multiple private key formats for Snowflake key-pair authentication.
You can provide your key in any of the following formats:
- PKCS8 DER (base64-encoded, single-line)
- PEM PKCS8: -----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY-----
- PEM PKCS1 RSA: -----BEGIN RSA PRIVATE KEY----- ... -----END RSA PRIVATE KEY-----
- Multiline or single-line input (Kestra will normalize automatically)
- Encrypted PKCS8 (requires providing
privateKeyPassword)
Recommended format
Snowflake recommends PKCS8. If your key is in PKCS1 format, Kestra will automatically convert it.
Example: using a PEM PKCS8 key (recommended)
secret('SNOWFLAKE_PRIVATE_KEY') should contain:
-----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASC... ... -----END PRIVATE KEY-----
Example: encrypted private key
privateKey: "" privateKeyPassword: ""
Converting a PEM key to unencrypted PKCS8 DER (optional)
openssl pkcs8 -topk8 -nocrypt -inform PEM -outform DER
-in private_key.pem
-out private_key.der
base64 -w 0 private_key.der > private_key.base64
You can then store the content of private_key.base64 as the Kestra secret.
Kestra automatically detects the format and performs the necessary conversions. No manual header stripping or reformatting is required.
Specifies the private key password for key pair authentication and key rotation.
Specifies the default access control role to use in the Snowflake session initiated by the driver.
The specified role should be an existing role that has already been assigned to the specified user for the driver. If the specified role has not already been assigned to the user, the role is not used when the session is initiated by the driver.
If you need to use a different role after connecting, execute the USE ROLE command.
Specifies the default schema to use for the specified database once connected.
The specified schema should be an existing schema for which the specified default role has privileges.
If you need to use a different schema after connecting, execute the USE SCHEMA command.
The database user.
Specifies the virtual warehouse to use once connected.
The specified warehouse should be an existing warehouse for which the specified default role has privileges.
If you need to use a different warehouse after connecting, execute the USE WAREHOUSE command to set a different warehouse for the session.
uriThe URI of the staged file.