---
title: "Snowflake"
slug: "snowflake"
description: "Get your data from any source into your Snowflake with Dataddo! Learn how to create a data flow easily in three steps. Get secure and reliable data flows."
updated: 2025-08-05T12:49:31Z
published: 2025-08-05T12:49:31Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dataddo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Snowflake

**Snowflake** is a cloud-based data warehousing platform that provides a fully managed, scalable, and high-performance solution for storing and analyzing data. It separates compute from storage, allowing users to scale resources independently and enabling organizations to efficiently manage and query their data for analytics and business insights.

## Prerequisites

          
          

- You have create [a Snowflake user](/docs/snowflake#in-snowflake) with `USAGE`, `SELECT`, `INSERT`, `UPDATE`, `CREATE TABLE`, and `DELETE` permissions.
- You have allowed incoming connection from [Dataddo IPs](/docs/network-acl) in your network policy configuration.

## Authorize Connection to Snowflake

### In Snowflake

To insert the data to Snowflake, the user account provided to Dataddo will need the following permissions: `USAGE`, `SELECT`, `INSERT`, `UPDATE`, `CREATE TABLE`, and `DELETE`.

The easiest way is to create a new user account specifically for Dataddo is using the following:

```
CREATE ROLE dataddo_role;
```

Dataddo automatically creates the tables in the schema when a new flow is provisioned. Make sure that the `CREATE TABLE` permission is assigned to the newly created role using:

```
GRANT CREATE TABLE ON SCHEMA your_schema TO ROLE dataddo_role;
```

Please also use **FUTURE GRANT** to ensure that any table created by Dataddo will automatically have the right permissions.

```
GRANT SELECT, INSERT, UPDATE, DELETE ON FUTURE TABLES IN SCHEMA your_schema TO ROLE dataddo_role;
```

Make sure to replace `your_schema` the the actual schema name.

### In Dataddo

1. In the **Authorizers** tab, click on [Authorize New Service](https://app.dataddo.com/service/new) and select **Snowflake**.
2. You will be asked to fill the following fields:
  1. **Account identifier**: The account identifier assigned to your account by Snowflake. Example values are `SW123456.eu-west-1`, `SW12345.us-central1.gcp`, or `SW123456.ap-south-1.aws`. For more informaton, see [Snowflake's official documentation](https://docs.snowflake.com/en/user-guide/admin-account-identifier).
  2. **Database**: Name of your database in **uppercase**.
  3. **Username**: Username for authentication.
  4. **Password**: Password for authentication.
  5. **Schema**: The schema belonging to the chosen database. The default value is `PUBLIC`. Make sure to use uppercase.
  6. **Warehouse**: Specifies the default virtual warehouse for queries. If unspecified, the default data warehouse will be used.
  7. **Region**: DEPRECATED. You may specify a region, such as `eu-central-1`, with this parameter. However, since this parameter is deprecated, it is best to specify the region as part of the account parameter. For details, see the description of the account parameter.
  8. **Role**: Can be left empty, unless you want to specify the default role to use for sessions initiated by the connection from Dataddo.
3. Click on **Save**.

          **Case Sensitivity**

          

Dataddo is using **case-sensitive mode** when querying the Snowflake. As such, since Snowflake stores all the indetifiers (e.g. table names, schemas) by default in **uppercase**, please **use uppercase** for any identifier to avoid errors.

## Key-Pair Authentication in Snowflake

### Generate a Public Key in Dataddo

Authorization using a private/public key pair is also possible for this destination. Simply generate a new key pair directly in Dataddo and upload the public key to your destination.

1. In Dataddo, navigate to the [Security](https://app.dataddo.com/settings/security) page.
2. Switch to the **Certificates** tab and click on **New Certificate**.
3. On the default **Generate Certificate** tab:
  1. Name your private/public key pair,
  2. Select the appropriate private key bits,
  3. Click on **Generate**.
4. **Copy the generated public key** and **upload it to your destination**. Keep the key stored in a safe space as it can be displayed only once.

### In Snowflake

Once you have a public key, assign it to a Snowflake user. To do so, the user must have one of the following:

- `MODIFY PROGRAMMATIC AUTHENTICATION METHODS` or `OWNERSHIP` privilege.
- `SECURITYADMIN` role or higher.

1. If needed, first create a new role and service user (service account) for Dataddo.

```
CREATE ROLE dataddo_role;
CREATE USER dataddo_service_user;
```
2. Grant the necessary privilege or role to the user.

```
GRANT MODIFY PROGRAMMATIC AUTHENTICATION METHODS ON USER dataddo_service_account
TO ROLE dataddo_role;
```
3. Execute an `ALTER USER` command to assign the public key obtained from Dataddo to the user.

```
ALTER USER dataddo_service_user SET
RSA_PUBLIC_KEY='<public key>';
```
4. In your Snowflake client, choose the key-pair authentiction method. For more information, refer to [Snowflake's official documentation](https://docs.snowflake.com/en/user-guide/key-pair-auth#configure-the-snowflake-client-to-use-key-pair-authentication).

## Create a New Snowflake Destination

1. On the **Destinations** page, click on the [**Create Destination**](https://app.dataddo.com/destinations) button and select the destination from the list.
2. Select your ***authorizer*** from the drop-down menu.
3. Name your ***destination*** and click on **Save**.

          Need to authorize another connection?

          

Click on **Add new Account** in drop-down menu during ***authorizer*** selection and follow the on-screen prompts. You can also go to the **Authorizers** tab and click on [**Add New Service**](https://app.dataddo.com/service/new).

## Create a Flow to Snowflake

1. Navigate to **Flows** and click on [**Create Flow**](https://app.dataddo.com/flow/new).
2. Click on **Connect Your Data** to add your ***source(s)***.
3. Click on **Connect Your Data Destination** to add the ***destination***.
4. Choose the [write mode](https://docs.dataddo.com/docs/data-storages#write-modes) and fill in the other required information.
5. Check the **Data Preview** to see if your configuration is correct.
6. **Name** your flow and click on **Create Flow** to finish the setup.

### Table Naming Convention

When naming your table, please make sure the table name:

- Is in all upper case letters.
- Starts with a letter or an underscore.
- Contains only:
  - Letters
  - Numbers
  - Underscores
  - Dollar signs

---

## Troubleshooting

### Case Sensitive Error

          **ERROR CODE**

          

Failed to prepare table: reading current structure: verifying table name: table named "..." doesn't match "...", you use case-insensitive format most probably.

This issue is caused by **a table in the flow configuration containing lower-case letters**. To solve the issue, please follow these steps:

1. In the [**Flows**](https://app.dataddo.com/flows) tab, click on your flow.
2. Rewrite your table name in **all uppercase**.
3. Go to your Snowflake account and **delete the table**.
4. **Restart** the flow.

### No Active Warehouse Error

          **ERROR CODE**

          

Failed to prepare table: reading current structure: verifying table name: ...: No active warehouse selected in the current session. Select an active warehouse with the 'use warehouse' command.

This error is caused by **your authorizer not specifying the warehouse**. To solve the issue, please follow these steps:

1. [**Reauthorize**](/docs/authorized-services#how-to-reauthorize-your-account) your Snowflake account with the correct **warehouse** name.
2. **Restart** the flow.

### Current Role has no Privileges Error

          **ERROR CODE**

          

Table '...' already exists, but current role has no privileges on it. If this is unexpected and you cannot resolve this problem, contact your system administrator.

This error is caused by the fact that newly (and automatically) created table has no privileges. This is due to the fact that no **FUTURE GRANT** has been made.

1. Make sure to set [correct permissions](/docs/snowflake#in-snowflake). Pay special attention to the **FUTURE GRANT** part.
2. Delete the newly created table in the Snowflake.
3. Restart the flow.

### IP/Token XXX.XXX.XXX.XXX is not allowed to access Snowflake

          **ERROR CODE**

          

Connecting to database: pinging database server: Incoming request with IP/Token XXX.XXX.XXX.XXX is not allowed to access Snowflake.

The Snowflake account has an active Network Policy or Network Policy with Network Rule applied at the user or account level and the Dataddo's IP address is either in the Blocked List or not in the Allowed List of the network policy configuration To solve the issue, please follow these steps:

1. Go to Snowflake and update the network policy and allow the [Dataddo IPs](/docs/network-acl).
2. **Restart** the flow.

## Related Articles

- [Data Backfilling to Storages](https://docs.dataddo.com/docs/data-backfilling-to-storages)
- [Write Modes](https://docs.dataddo.com/docs/data-storages#write-modes)
- [Implementation of Batch Ingestion to Data Warehouses](https://docs.dataddo.com/docs/ingestion-to-data-warehouses)
- [Network Access Control List (ACL) Configuration](https://docs.dataddo.com/docs/network-acl)
- [SSH Tunnelling](https://docs.dataddo.com/docs/ssh-tunnelling)
- [Data Transformations](https://docs.dataddo.com/docs/data-transformations)
- [Data Quality Firewall](https://docs.dataddo.com/docs/data-quality-firewall)
