MySQL data in Google Sheets,
on the schedule you set.
Business teams get live MySQL data in the spreadsheet they already know — no SQL queries, no manual exports, no scripts. Describe the sync in plain English and rsync.ai handles the rest.
rsync.ai reads from MySQL over a read-only connection and appends rows to your target Google Sheets tab on the schedule you describe. Incremental runs write only rows added since the last run. Values are written as typed, so Sheets parses numbers and dates itself. Works with MySQL 5.7+, RDS, Aurora and Cloud SQL; connects to Google with OAuth.
- Plain-English schedule — 'every morning at 9am', 'every hour'
- Values written as typed — Sheets parses numbers and dates
- Incremental append — only rows added since the last run
- Multiple MySQL tables → multiple tabs in the same spreadsheet
How to sync MySQL to Google Sheets — 5 steps
From MySQL connection to rows appending on a schedule — typically a few minutes.
- 1
Connect MySQL
Provide your MySQL host, port (default 3306), username, password, and database name. rsync.ai opens a read-only connection — no binlog replication user required, just SELECT privileges on the tables you want to export. SSL/TLS and SSH tunnels are supported.
mysql://user:pass@host:3306/mydb — SELECT privileges only - 2
Connect Google Sheets
Authorize rsync.ai with Google OAuth. It requests Google's Sheets scope, which lets it read and write the spreadsheets in that Google account (it does not get the rest of your Drive). To limit what it can touch, connect a Google account that owns only the spreadsheets you want it to write.
Google OAuth · Sheets scope - 3
Describe the sync in plain English
Type what you want: 'Append new MySQL orders to Sheet1 every morning at 9am.' or 'Add new rows from the products table to my pricing spreadsheet every hour.' rsync.ai parses your intent, infers the SQL query, and proposes the target tab and header row.
No SQL · No YAML · No scripts - 4
Review the columns
rsync.ai lists the MySQL columns it will write. Values go in as if typed into Sheets, so Sheets parses numbers and dates itself, and JSON arrives as a string. rsync.ai does not set cell formats, so apply currency, date or checkbox formatting in Sheets. Exclude any column you don't want in the sheet.
Values written as typed · exclude columns you don't need - 5
Approve and schedule
Approve the proposed tab layout. rsync.ai writes the first batch immediately so you can verify it looks right, then runs on the cadence you set. Each run appends rows to the tab. Pick incremental so only rows added since the last run are written. Google Sheets destinations don't update or delete rows already written.
First run immediate — then scheduled on your cadence
How MySQL columns land in Google Sheets
How MySQL values arrive in Sheets. Google Sheets cells are untyped, so rsync.ai writes values as typed and leaves formatting to you.
| MySQL column | Value in Google Sheets | Notes | |
|---|---|---|---|
| id (INT) | id (Number) | Written as a number. Sheets applies its own default display format. | |
| created_at (DATETIME) | created_at (date-time, parsed by Sheets) | Written as a date-time value that Sheets parses. rsync.ai does not apply a format pattern; change the display format in Sheets (Format → Number). | |
| customer_name (VARCHAR(255)) | customer_name (Text) | VARCHAR → text. Column width is not adjusted. | |
| is_paid (TINYINT(1)) | is_paid (Number) | Written as 1 or 0. rsync.ai does not create checkbox cells. | |
| total_amount (DECIMAL(10,2)) | total_amount (Number) | Written as a number. rsync.ai does not apply currency formatting; format the column in Sheets. | |
| metadata (JSON) | metadata (Text) | MySQL JSON column serialised as a JSON string in a Text cell. Nested objects are not expanded — use a PostgreSQL destination if you need queryable JSON. |
rsync.ai vs. Zapier, Fivetran, manual CSV for MySQL → Google Sheets
How the options compare for keeping a spreadsheet in sync with MySQL.
| Feature | rsync.aiyou | Zapier | Fivetran | Manual CSV |
|---|---|---|---|---|
| Plain-English pipeline setup | ||||
| Scheduled MySQL → Sheets sync | ||||
| Incremental (append new rows only) | ||||
| Column-level PII masking / exclusion | ||||
| Self-host in your own VPC | ||||
| Source-available connector code | ||||
| No per-row / per-task pricing | ||||
| Multiple tabs from multiple tables |
MySQL to Google Sheets — frequently asked
How many rows can rsync.ai write to Google Sheets from MySQL?
Does rsync.ai update existing rows in Google Sheets, or only append?
Can I sync MySQL data into multiple tabs in the same Google Sheet?
How are MySQL values written to Google Sheets?
How does rsync.ai authenticate to Google Sheets?
What schedule options are available for MySQL → Google Sheets syncs?
Can I redact PII columns before they reach Google Sheets?
Is rsync.ai self-hosted for MySQL → Google Sheets?
Run your first MySQL to Google Sheets pipeline free
The first 10 GB of data moved is free. Describe the sync in plain English and review the plan before anything runs.