FTP to Snowflake: How to Move Your Data

Move FTP files into Snowflake with Airbyte. Why there is no plain FTP connector, using SFTP Bulk instead, and what to do if your server predates SFTP.

Summarize with AI:

Moving files from an FTP server into Snowflake turns a folder somebody drops files into every night into rows your analysts can query. Partner feeds and vendor extracts arrive this way constantly, and they stay invisible to everybody until something loads them.

One thing to settle before you start, because it decides whether this pipeline is possible at all. There is no plain FTP connector. The connector you want is SFTP Bulk, and SFTP is a different protocol that runs over SSH, so what your server actually supports matters more than what people call it.

FTP to Snowflake at a glance:

CapabilitySupportedWhat it means for this pipeline
ProtocolSFTP, not FTPYour server needs SSH-based transfer on port 22
ConnectorSFTP BulkPrefer it over the older SFTP connector
Delivery methodTwo optionsReplicate records for rows, or copy raw files unparsed
Raw file size1.5 GB maximumPer file, on the copy raw files method
Private keysUploaded as a filePasting the key text into the field will not work

Why move data from FTP to Snowflake?

Two situations account for most of these pipelines.

The first is automating a manual step. A partner drops files onto a server every night and somebody currently downloads them, opens them to check nothing looks odd, and uploads them somewhere else. That person is a pipeline nobody has written yet, and they are doing it on holiday too.

The second is joining a file feed to warehouse data, such as matching a vendor's product list against your own catalogue. File transfer is how a great deal of business data still moves between organisations, and a warehouse is where it becomes useful rather than archived.

What do you need before you start?

The first item is the one that can stop the project, so confirm it before anything else:

A server that genuinely speaks SFTP. Ask whoever runs it whether SSH-based transfer is enabled, usually on port 22, rather than assuming from the word people use. The SFTP Bulk source documentation covers the connector, and the section below covers what to do if the answer is no.

Credentials, and a private key as a file if you use one. A username with either a password or a key pair. If you authenticate with a key, Airbyte requires the key to be uploaded as a file rather than pasted into the field, which catches people who are used to pasting secrets.

A folder path and a glob pattern. The pattern selects which files belong to the stream, and being specific matters, because a loose pattern that catches two differently shaped feeds produces one confused table.

Snowflake objects and a role. A warehouse, database, schema and a role able to create tables in that schema. The smallest warehouse is usually ample, since file feeds are modest by warehouse standards.

Note also that SFTP Bulk is a Marketplace connector at an early release stage, so alert on sync failures rather than assuming silence means success.

How do you build an FTP to Snowflake pipeline in Airbyte?

Step 1: Confirm the protocol, then the delivery method

Establish that the server supports SFTP before planning anything else. Then choose the delivery method: replicate records parses your files into rows, which is what a warehouse wants, while copy raw files transfers them without parsing and is for archival cases.

Step 2: Configure the SFTP Bulk source

Click Sources in the left navigation, then New Source, and select SFTP Bulk, following adding a source. Supply the host, port and credentials, uploading the private key as a file if you use one, then set the folder path, file format and glob pattern.

Step 3: Configure the Snowflake destination

Click Destinations, then New Destination, and select Snowflake, following adding a destination. Supply the account identifier, warehouse, database, schema and role. Airbyte creates one table per stream with its own metadata columns alongside your data.

Step 4: Create the connection and alert on failures

Click Connections, then New connection, select your stream and an incremental sync mode so new files are picked up without re-reading the ones already processed. Set the frequency against how often files actually arrive rather than how fresh anyone would like them.

Then build views over the raw tables so anything consuming this reads a stable interface rather than Airbyte's metadata columns, and check the result after the first sync if your files are CSV.

What if your server only speaks plain FTP?

Then this connector will not reach it, and no configuration changes that. FTP and SFTP are unrelated protocols that happen to share three letters: FTP is the older unencrypted protocol on port 21, while SFTP runs inside an SSH session on port 22. A client for one cannot talk to the other.

In practice most servers people call FTP have supported SFTP for years, because sending business data unencrypted is no longer acceptable to anybody's security team. So the first move is simply to ask, and the answer is usually yes even when the habit of saying FTP persists.

Where it genuinely is plain FTP only, you have two routes. Ask whoever runs the server to enable SFTP, which is a reasonable request given the encryption argument, or have the files landed in object storage instead and use the S3, GCS or Azure Blob source. Both are better than keeping an unencrypted transfer alive.

How should you select and consolidate files?

The connector consolidates multiple files into a single stream, which is what you want. A folder holding a year of daily extracts with the same columns becomes one table rather than 365, and that is the difference between a dataset somebody can query and a directory listing.

The glob pattern is how you control that, and precision matters because a pattern that accidentally matches two differently shaped feeds will consolidate them into one confused table. Include the folder when files sit in a subdirectory, and use a double asterisk to match recursively.

Incremental sync works from file creation or modification time, which has a consequence worth asking your partner about. A file rewritten in place gets a new timestamp and its rows arrive twice, while a file edited without changing its timestamp is never revisited and nothing reports it. Which of those happens decides what you build.

Frequently asked questions

Is there an FTP connector in Airbyte?

Not for plain FTP. The connector is SFTP Bulk, which speaks SFTP over SSH. Confirm your server supports that before planning the pipeline.

Should I use SFTP or SFTP Bulk?

SFTP Bulk. It offers features the older SFTP connector does not, including delivery method options and better file consolidation.

My private key is rejected. What is wrong?

Airbyte requires the key to be uploaded as a file rather than pasted into the field as text. Save it and upload it.

Why did the same rows arrive twice?

A file was rewritten in place, giving it a new modification time. Use a deduplicating sync mode where your data has a natural key, or a view that picks the latest version.

Can I do this without writing code?

Yes. The setup above is entirely UI-driven. You will want Snowflake views so consumers read a stable interface rather than the raw synced tables.

Get your FTP data into Snowflake

Confirm the server speaks SFTP before anything else, because that decides whether the pipeline is possible. Then choose replicate records, upload your private key as a file, write a specific glob pattern, ask whether files are ever rewritten in place, and alert on failures.

Airbyte's connector catalog includes 700+ pre-built connectors, so partner files can reach a warehouse alongside your own systems. For the same source in a database, see SFTP to PostgreSQL, and for files in object storage instead, Amazon S3 to Snowflake.

Start syncing now →

Integrate with 700+ apps using Airbyte

Move data from 700+ sources into warehouses, lakes, and beyond. Set up pipelines in minutes with pre-built connectors and the Connector Builder.