Keep Google Sheets in step with your MariaDB database, 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 Google Sheets sheet. 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.
What you’ll end up with
A Google Sheets sheet that holds the rows your MariaDB 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:
MariaDB holds your data on a server you or your team run. Your team works in Google Sheets. The usual bridge is an Apps Script or a Zapier zap that breaks quietly and copies one row at a time. Query Streams Automation does it differently: the Agent that already sits with your MariaDB database runs your saved SQL on a schedule and writes the whole result into Google Sheets in one pass, matching rows by a key so the sheet stays correct rather than growing.
What you’ll need
MariaDB connected through the Agent
The Agent installed where your MariaDB database is, with the connection added in Data Agents. Not done yet? Connect MariaDB 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 Google Sheets login
Google asks you to let Query Streams see and edit only the spreadsheets you pick. It cannot see anything else in your Drive.
Where does the work happen? On the computer that runs the Agent. It runs the query on the schedule and writes the rows to Google Sheets, so that computer needs to stay on. Your browser can be closed. Query Streams itself never stores the rows.
Set it up in six steps
-
Save the query you want to keep in sync
Open Query Builder, pick your MariaDB connection (not connected yet? start here), and write the SELECT that returns exactly the rows and columns you want in Google Sheets. This one pulls a few columns from a customers table:
Example · SQLSELECT customer_id, name, city FROM customers ORDER BY name LIMIT 100;
Run it, then Save it with a name you will recognise, like “Orders for Google Sheets”. Keep a column that is unique per row in the SELECT, here customer_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.
-
Open Automation and choose Google Sheets
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 Google Sheets 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.
-
Connect Google Sheets
On Step 2 click Connect with Google Sheets. A Google window opens; sign in and allow it. Google asks you to let Query Streams see and edit only the spreadsheets you pick. It cannot see anything else in your Drive. Already connected once? The page offers Use This Connection instead.
-
Choose where the rows land
On Step 3 pick the Spreadsheet: click Select from Google Drive and choose it in Google’s file picker, or type a name under Create New Spreadsheet and click Create. Then choose the Sheet (the tab). One automation per tab; a tab another automation already writes to is shown as taken.
-
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 · fastAppend
Every run adds the query’s rows to the bottom of the sheet. 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 · mirrorsFull 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 sheet by hand, so keep hand-made rows on another tab. 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 sheet:
- 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 MariaDB on every run. If someone edits a Sync column in Google Sheets, 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 MariaDB 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 Google Sheets are never touched by a sync.
Which is faster? Append writes without reading the sheet first. Full Sync reads it, compares every row, and writes only the differences, so it takes longer but the sheet always matches the query. You can switch later from the automation’s Edit panel.
For a sheet you want to trust, click Create all columns as Sync, then click the key icon on customer_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.
-
Set the schedule, name it, create it
On Step 5 choose Run on a schedule and pick a Frequency:
Frequency Runs Every 5 Minutes every 5 minutes, the fastest allowed Every 15 Minutes every 15 minutes Every 30 Minutes every 30 minutes Every Hour at the top of every hour Daily at 9 AM every day at 9:00, the default Daily at 6 AM every day at 6:00 Weekdays at 9 AM Monday to Friday at 9:00 Weekly (Monday 9 AM) every Monday at 9:00 Custom Schedule your 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 Google Sheets, 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 Google Sheets: the rows are there, under your column headers.
That’s it. From now on the sheet 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 Google Sheets 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 Google Sheets, Full Sync stops before writing anything and shows Fix options: put the header back and run again, or start over. 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:
| Plan | Rows per run |
|---|---|
| Free | 125 |
| Personal Core | 500 |
| Personal Plus | 1,000 |
| Business Core | 2,500 |
| Business Plus | 5,000 |
| Business Max | 10,000 |
| Enterprise Core | 25,000 |
| Enterprise Plus | 100,000 |
| Enterprise Max | 250,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 sheet 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.
Questions people ask
Will the sync overwrite notes my team adds in Google Sheets?
Not if the notes live in their own column. Columns that exist only in Google Sheets 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 MariaDB value on every run; Preserve columns are filled when a row first arrives and are not compared afterwards.
Does my MariaDB data get stored by Query Streams?
No. The Agent runs the query on your side and sends the rows straight on to Google Sheets 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 Google Sheets. 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 tab?
No, one automation per tab. Point a second automation at a different tab, 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.
Related guides
Every guide for MariaDB
Not quite your setup?
- Running MySQL? Pick the MySQL card instead; the steps are the same → MySQL
Setup trouble?
- Want the Agent to sign in with a login that can only read? Create a read-only database user, with copy-paste SQL for each database → Create a read-only database user
- Test connection cannot reach the database server? Open the database's port in Windows Defender Firewall on the computer it runs on → Open a firewall port on Windows
- Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?

