View Categories

Sync DuckDB to Airtable on a Schedule

Automation · DuckDB to Airtable

Keep Airtable in step with your DuckDB file, on a schedule

Write the SQL once. Query Streams runs it on your schedule, anything from every five minutes to weekly, and writes the rows into your Airtable table. Match rows by a key so edits land in place and rows that left the query are removed, or simply append. No Zapier, no scripts, no exports. About fifteen minutes the first time, and the Free plan covers it.

About 15 minutes No coding needed File stays where it is Every 5 minutes to weekly
Stuck at any point? Just ask us. Open Support in Query Streams (top-right menu → Support) and send us a message. Real people read it, and “I don’t know what this screen is asking for” is a perfectly good question.

What you’ll end up with

DuckDB logoAn Airtable table that holds the rows your DuckDB query returns and is brought up to date on a schedule, every five minutes to weekly, with a receipt of what changed on every run. Like this:

DuckDB holds your data in a file. Your team works in Airtable. The usual bridge is a Zapier or Make scenario, or a CSV someone uploads that breaks quietly and copies one row at a time. Query Streams Automation does it differently: the Agent that already reads your DuckDB file runs your saved SQL on a schedule and writes the whole result into Airtable in one pass, matching rows by a key so the table stays correct rather than growing.

WHERE THE FILE LIVESoffice computer, a server, or the one at homeYour DuckDB filesales.duckdb · stays hereQuery Streams Agentruns the saved queryon your scheduleQuery Streamsencrypted linkrows only · written, not read back by usWHERE YOUR TEAM WORKSany browser, or the Airtable appAirtableyour table, updated in place
The Agent lives with your data and runs the query when the schedule says so. Airtable just receives the rows. Nobody has to press anything.

What you’ll need

A Query Streams account

The Free plan is enough for this guide. Sign up at my.querystreams.com.

DuckDB connected through the Agent

The Agent installed on the computer that holds your DuckDB file, or on one that reads it from a network share, with the connection added in Data Agents. Not done yet? Connect DuckDB first; it takes about ten minutes.

A saved query

The SELECT you want to keep in sync, saved in Query Builder. Step 1 below shows one. If you want changed rows updated in place, include a column that is unique per row, like an ID.

Your Airtable login

Airtable asks you to let Query Streams read and write records, and read and write table structure, in the bases you choose. A Personal Access Token works too if your workspace prefers it.

Where does the work happen? On the computer that runs the Agent. It runs the query on the schedule and writes the rows to Airtable, so that computer needs to stay on. Your browser can be closed. Query Streams itself never stores the rows.

File on another computer? The Agent does not have to run on the computer that holds your DuckDB file: it can read the file from a network share. Reaching a file on a network share, below, shows what that takes.

Set it up in six steps

  1. Save the query you want to keep in sync

    Open Query Builder, pick your DuckDB connection (not connected yet? start here), and write the SELECT that returns exactly the rows and columns you want in Airtable. This one pulls a few columns from an orders table:

    Example · SQL
    SELECT order_id, customer_name, order_total
    FROM main.orders
    ORDER BY order_total DESC
    LIMIT 100;

    Run it, then Save it with a name you will recognise, like “Orders for Airtable”. Keep a column that is unique per row in the SELECT, here order_id. That is the key Full Sync uses to update rows in place. Edit and re-save the query later and the automation picks up the change on its next run.

  2. Open Automation and choose Airtable

    In the portal, open Automation (top menu Streams → Scheduled → Automation) and click New automation. The wizard has five short steps. On Step 1 click the Airtable card.

    Seeing “Before You Begin” instead? The wizard only opens once an Agent is online with a connection and at least one saved query exists. The page lists which of the three is missing and links to it.

  3. Connect Airtable

    On Step 2 click Connect with Airtable. Airtable opens, asks which bases Query Streams may use, and sends you back. Airtable asks you to let Query Streams read and write records, and read and write table structure, in the bases you choose. A Personal Access Token works too if your workspace prefers it. Already connected once? The page offers Use This Connection instead.

  4. Choose where the rows land

    On Step 3 pick the Base, then the Table the rows should land in. Starting fresh is easiest: choose Create New Table, type a name and click Create; Query Streams creates the fields from your query’s columns. If the table already has rows, a preview shows them and explains what each sync mode would do to them. One automation per table.

  5. Pick the query and decide how rows land

    On Step 4 open the Saved Query list and choose the query from step 1. Query Streams runs it once to read the columns, tells you how many rows it returns, and shows two choices:

    Append · fast

    Append

    Every run adds the query’s rows to the bottom of the table. Nothing is updated and nothing is deleted, so it is the quick choice for logs, events and history you want to accumulate. No key column needed. A row that comes back unchanged is not added again; a row whose values changed is added below as a new line and the old one stays.

    Full Sync · mirrors

    Full Sync

    Rows are matched by a key column such as an order ID. New rows are added, changed rows are updated in place, and rows that no longer come back from the query are removed, including rows someone typed into the table by hand, so keep hand-made rows on another table. This is the choice for inventory, pipelines, master data and dashboards.

    Full Sync is set per column, which is what makes it useful in a shared table:

    Key
    The column that identifies a row, for example order_id. It has to be unique in the query result; Query Streams checks that for you and refuses duplicates.
    Sync
    Overwritten from DuckDB on every run. If someone edits a Sync column in Airtable, the next run puts the source value back.
    Preserve
    Written when the row first arrives and never compared again, so a change to it in DuckDB does not trigger an update. For notes, owners and follow-up dates your team types by hand, use a column that is not in the query at all: columns that exist only in Airtable are never touched by a sync.

    Which is faster? Append writes without reading the table first. Full Sync reads it, compares every row, and writes only the differences, so it takes longer but the table always matches the query. You can switch later from the automation’s Edit panel.

    For a table you want to trust, click Create all columns as Sync, then click the key icon on order_id to make it the Key. Query Streams scans the whole result to confirm the key is unique and warns you if it is not. Keep your team’s own notes in columns that are not part of the query; those are never touched. For a log that should only ever grow, click Create all columns as Preserve instead and skip the key. Click Continue.

  6. Set the schedule, name it, create it

    On Step 5 choose Run on a schedule and pick a Frequency:

    FrequencyRuns
    Every 5 Minutesevery 5 minutes, the fastest allowed
    Every 15 Minutesevery 15 minutes
    Every 30 Minutesevery 30 minutes
    Every Hourat the top of every hour
    Daily at 9 AMevery day at 9:00, the default
    Daily at 6 AMevery day at 6:00
    Weekdays at 9 AMMonday to Friday at 9:00
    Weekly (Monday 9 AM)every Monday at 9:00
    Custom Scheduleyour own minutes, hours, days of the week or day of the month

    Times follow the Timezone you pick, which starts as your browser’s. You can also choose Manual only and press Run whenever you like; a schedule can be added later from the automation’s Edit panel. Scheduled runs happen on the Agent, so they keep going while your browser is closed. If the computer running the Agent is off when a run is due, the missed run happens once, shortly after the Agent starts again.

    Give it an Integration Name, such as “Orders to Airtable, daily”, check the Ready to Create summary and click Create Automation. Back on the Automation page, press Run once to do the first sync now rather than waiting for the schedule. Open Airtable: the rows are there, under your column headers.

That’s it. From now on the table keeps itself current. Nothing left your network except the rows the query returned, and nobody has to remember to run anything.

What you see afterwards

The Automation page lists every automation with its status, source, target, key, schedule, last sync and row count. Open one for the Executions tab: every run with its trigger (manual or scheduled), duration, and rows created, updated, deleted and unchanged. A Performance tab shows data processed and success rate over 7 to 90 days.

You are told when it stops

Every organisation has a Sync Issues alert rule from day one: an in-app notice and an email when a sync fails, and one more when it recovers. One message per incident, never one per retry. Turn it off or change the channels under Streams → Alerts & Reports.

It pauses itself when it should

If Airtable stops accepting the connection, or the data connector is deleted, the automation pauses and says why. Reconnect or pick a new source and press Resume. Other errors keep the schedule going and show on the row.

Key column missing

If someone renames or deletes the key column in Airtable, Full Sync stops before writing anything and shows Fix options: put the column back with its exact name and run again. Your other columns are never deleted by a sync.

What the plans allow

Automation is on every plan, including Free, with no limit on how many automations you create. What each plan limits is how many rows one query may return per run:

PlanRows per run
Free125
Personal Core500
Personal Plus1,000
Business Core2,500
Business Plus5,000
Business Max10,000
Enterprise Core25,000
Enterprise Plus100,000
Enterprise Max250,000

If a query returns more, the run is held rather than cut short, and the automation tells you which plan fits or suggests adding a filter such as a date range. Each successful run also counts against your Data Realm allowance, the same pool your Excel and Sheets queries use. See the pricing page for the allowances.

Good next moves

  • Add a filter to the query, such as the last 90 days, so the table stays small and fast and fits your plan’s row limit.
  • Keep hand-typed notes in their own columns, outside the query, so they survive every sync.
  • Group your automations from the Edit panel once you have a few; the Automation page filters by group.

Reaching a file on a network share

The Agent opens files as a background service, not as you, so a file on another computer needs one extra step. Which step depends on the computer the Agent runs on.

Windows

Type the network path, like \\server\share\folder, never a mapped drive letter such as S:, which the Agent cannot see. If the share only lets in named people, click Service identity (the chip under the path) and store a login for that server: a company domain account, or an account made on the server itself with Domain left blank. The Agent then signs in to that server and reads the file there, and every connector on that Agent that reads the same server must use the same login. Without a login, it reads as its own service account, which a company domain sees as the computer itself. Step by step on Windows

Linux

Share logins stored in the Portal are not used on Linux: an administrator mounts the share on the Agent’s computer first, in a folder under /mnt or /media, because the Agent’s service cannot see /home or /run/user. In the connector, keep the \\server\share path, which the Agent maps onto the mount, or type the mount path instead, such as /mnt/fileserver-shared/Accounts. How to mount a share on Linux

Mac

Share logins stored in the Portal are not used on a Mac: mount the share first from Terminal with sudo, in a folder under /Volumes, so the Agent’s background service can see it. In the connector, keep the \\server\share path, which the Agent maps onto the mount, or type the mount path instead, such as /Volumes/fileserver-shared/Accounts. How to mount a share on a Mac

If the test cannot get to the share, look for these words in its result: unreachable means the Agent’s computer got no answer from the server. On Linux or a Mac, not mounted means the share still has to be mounted, and that message includes the exact mount command for your server.

DuckDB file on a share? DuckDB allows one writer at a time, so the Agent cannot open a file that another program has open for writing; on a \\server\share path the test says it is open for writing by another program. Close it there, or point the connector at a file nobody is writing to. Every query reads the file across the network, so a large file answers more slowly than it would from a local disk.

Test failed on a share?

Every run reaches the file the same way the connection test does. If runs start failing after something changed on the file server, a new password for example, open the connector in Data Agents and click Test connection. The test result, and the line under the file path, name the problem:

MessageCauseFix
DuckDB database file not found: followed by a \\server\share path you know is rightNo login is stored, so the Agent tried the share as its own account and could not see the file: the share turned that account away, or the server did not answer. In the first case the line under the path says Access denied for the agent’s service account.Click Service identity under the path and store a login that can read the share. If the line under the path does not say access denied, check that the Agent’s computer can open the share at all.
Share \\server: access denied — add credentials for this serverA login is stored, but that account has no permission on the share, or another sign-in to the same server is in the way; the message before this line says which.Ask whoever runs the server to give that account read access, or store an account that has it. For a sign-in in the way, see the two rows on one login per server below.
Share \\server: the credentials were refused — check the username and passwordThe server turned the stored login down: a typo, the wrong domain, or a password changed since it was saved, which also stops runs that used to work.Click the chip under the path and type the password again; for an account made on the server itself, leave Domain blank. After a refused login the Agent waits a minute before it tries that same one again, so the account is not locked out; saving a corrected password tries straight away.
Share \\server: server unreachable from the agent machineThe Agent’s computer got no answer from the server: a wrong server name, the server is off, or a firewall blocks file sharing.On the Agent’s computer, open the same \\server\share path in File Explorer. If that fails too, it is a network problem for whoever runs the network.
Another connector on this agent already signs in to \\server as …Windows lets one computer sign in to a server as one account at a time, and another connector on this Agent uses a different login for that server.Store the same login the other connector uses, or change it on every connector that reads that server.
Windows already holds a sign-in to \\server for …Something on the Agent’s computer other than the Agent is already signed in to that server as a different account, and the Agent never closes a sign-in it did not make.Do what the rest of the message says: use that same account on this connector, or close the other sign-in on the Agent’s computer. If it says the share is already readable through that sign-in, choose Use service identity in the login box instead.
This agent build cannot sign in to \\server with stored credentials.The Agent is an older version that cannot use stored logins.Update the Agent, then test again.
\\server\share is not mounted on this Linux agent (or macOS agent)The Agent runs on Linux or a Mac and the share has not been mounted on its computer yet; logins stored in the Portal are not used there.Mount it with the command the message gives you, then test again. Step by step: on Linux · on a Mac.
… is open for writing by another programDuckDB allows one writer at a time, and another program has the file open for writing.Close the file in that program, or point the connector at a file nobody is writing to.

Questions people ask

Will the sync overwrite notes my team adds in Airtable?

Not if the notes live in their own column. Columns that exist only in Airtable and not in your query are never touched, so add a Notes or Owner column beside the synced ones and type there. Columns marked Sync are put back to the DuckDB value on every run; Preserve columns are filled when a row first arrives and are not compared afterwards.

Does my DuckDB data get stored by Query Streams?

No. The Agent runs the query on your side and sends the rows straight on to Airtable over an encrypted link. Query Streams keeps the configuration, the schedule and a count of rows per run, not the rows themselves.

Does my computer need to stay on?

The one running the Agent does, because the Agent is what runs the query and writes to Airtable. Your own laptop and browser can be closed. If that computer is off when a run is due, the missed run happens once, shortly after the Agent starts again.

Can I change the query later?

Yes. Edit and save it in Query Builder and the next run uses the new version automatically. If you add or remove columns, open the automation’s Edit panel to map them.

Can two automations write to the same table?

No, one automation per table. Point a second automation at a different table, or widen the query behind the first one.

Does the Free plan really cover this?

Yes. Free is a plan you keep, not a trial that expires. Automation is included on every plan; what changes by plan is how many rows one query may return per run. See exactly what Free includes on the pricing page.

Still stuck? Open Support in Query Streams and tell us which step you are on and what you see. We will get you connected.
The same saved query can also be kept in step withGoogle SheetsSmartsheetBaserowSeaTableAnvil.worksand more

Every guide for DuckDB

Not quite your setup?

  • Have a folder of Parquet files rather than a DuckDB database file? Parquet Folder reads them all as one table → Parquet Folder

Setup trouble?

  • Agent says the file or folder does not exist, or access is denied? Mapped drives, network shares, OneDrive and Linux home folders each need one fix → Where the Agent can read files from
  • Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?
Updated on October 12, 2026

Powered by BetterDocs