Google Cloud SQL logo

Managed · multi-engine speaks PostgreSQL / MySQL / Microsoft SQL Server

Connect Google Cloud SQL to Excel, Sheets and AI

Google Cloud SQL — PostgreSQL, MySQL or SQL Server. The agent connects over the IP you already expose to yourselves.

1connection
0inbound ports
read-onlyenforced

One connection, every surface

Where your Cloud SQL data can go

Connect Cloud SQL once and the same read-only connection feeds all of these — no second setup, no second copy of the data. 9 of 11 have a step-by-step guide.

Guide

Cloud SQL to Excel

Microsoft Excel · Excel add-in

Pull live Cloud SQL results straight into a worksheet and refresh them on demand — desktop Excel, Excel Online, Microsoft 365.

Read the PostgreSQL guide
Guide

Cloud SQL to Google Sheets

Sheets add-on

Run a saved Cloud SQL query from the sidebar and drop the rows into the sheet. Shared collaborators can refresh it themselves.

Read the PostgreSQL guide
Guide

Cloud SQL MCP server

Claude, Cursor and MCP clients

Give an AI assistant read-only access to Cloud SQL with the schema it needs to write correct SQL — no credentials in the chat.

Read the PostgreSQL guide
Guide

Cloud SQL REST API

HTTP endpoint

Publish a Cloud SQL query as an authenticated JSON endpoint any application can call, with an OpenAPI 3.1 spec and ready-made Postman, Insomnia and Hoppscotch collections. No database port is opened.

Read the PostgreSQL guide
Guide

Cloud SQL to Airtable

Automation platform

Sync Cloud SQL rows into an Airtable base on a schedule, or fetch them inside an Airtable automation script.

Read the PostgreSQL guide
Guide

Cloud SQL to Baserow

Automation platform

Feed a Baserow table from Cloud SQL over the REST endpoint — self-hosted or Baserow cloud.

Read the PostgreSQL guide
Guide

Cloud SQL to SeaTable

Automation platform

Keep a SeaTable base current with Cloud SQL data without exporting a file or exposing the database.

Read the PostgreSQL guide
Guide

Cloud SQL to Smartsheet

Automation platform

Push Cloud SQL results into a Smartsheet grid so plans and reports read from the source system, not last week's export.

Read the PostgreSQL guide
Guide

Cloud SQL to Anvil

Anvil Works · App platform

Back an Anvil Python app with Cloud SQL through the REST endpoint instead of embedding database credentials in the app.

Read the PostgreSQL guide
Supported

Cloud SQL to Power BI

Power Query M

Paste the generated Power Query M into the Power BI Advanced Editor and the report reads live Cloud SQL results over HTTPS — no ODBC driver, no database port opened.

How Power BI works no Cloud SQL walkthrough written yet
Supported

Cloud SQL alerts and reports

Slack · Discord · Email · Webhook

Put a Cloud SQL query on a schedule and have the rows delivered to Slack, Discord, email or a signed webhook — or hold the message until a row count, threshold or percentage change crosses the line you set.

How alerts and reports work no Cloud SQL walkthrough written yet

How it works

5 steps, no inbound firewall change

01

Install the Network Agent on a VM inside the Google Cloud VPC. It only makes outbound connections, so the instance can keep its public IP switched off and its authorized networks empty.

02

Choose the engine — PostgreSQL, MySQL or SQL Server. The rest of the form follows the one you pick.

03

Give it the instance's private IP. A public IP works if that is how you already reach it, and 127.0.0.1 works if you are going through the Cloud SQL Auth Proxy.

04

Add a database user with SELECT on what you want read, and the database name.

05

Save. Microsoft Excel, Google Sheets, Power BI, MCP and REST all read that instance through the one connection, or join it to your other sources in a single statement.

Feature deep-dive

What Cloud SQL gives you

Private IP is the recommended path, and it is the easy one

Cloud SQL connectivity is usually the hard part of getting this data anywhere. It stops being hard when the thing doing the reading is already inside the VPC.

  • The agent makes outbound connections only, so putting it on a VM in your VPC needs no ingress rule of any kind.
  • The instance keeps no public IP, and the authorized networks list stays empty — nothing to update when an office address changes.
  • Because there is no hostname to point at, Cloud SQL is addressed by IP. That is a property of the service rather than a limitation here.
  • A public IP still works if that is your existing arrangement. The agent does not mind which side of the boundary it is on.

The Auth Proxy is understood

Plenty of teams reach Cloud SQL through the Cloud SQL Auth Proxy rather than over an IP directly, and the card notices when you are.

  • Entering 127.0.0.1 or localhost is recognised as the proxy, and the card says so rather than leaving you to wonder whether it is supported.
  • The proxy encrypts the tunnel itself, so the SSL option belongs off for that path — the card tells you this at the point where an SSL error would otherwise confuse you.
  • For direct IP connections the SSL option belongs on, and it is on by default.
  • The proxy is your process to run and manage; nothing about it is bundled into the agent.

Three engines, and a guard against picking the wrong one

A multi-engine card invites one specific mistake: pasting a port that belongs to a different engine than the one selected. That combination fails at connect time with nothing useful to say, so it is caught in the form.

  • PostgreSQL on 5432, MySQL on 3306, SQL Server on 1433 — prefilled for the engine you chose.
  • Type 3306 with PostgreSQL selected and the card tells you the port belongs to MySQL and asks you to check the engine, rather than passing it through.
  • A password with leading or trailing whitespace is flagged as well, because it is almost always a clipboard artifact and it fails as an opaque authentication error.
  • Whichever engine you choose, that is what the connection is saved as — Cloud SQL is kept as the badge on the card, not as a connection type.
-- Same read, whichever engine the instance runs
SELECT   c.name,
         COUNT(o.id)   AS orders,
         SUM(o.amount) AS revenue
FROM     customers AS c
JOIN     orders    AS o ON o.customer_id = c.id
GROUP BY c.name
ORDER BY revenue DESC;

Shared by every database connector

True of every database connector

  • Outbound only — the agent opens one encrypted connection out to Query Streams. No inbound port to forward, no VPN, no IP allowlist, nothing about your database exposed to the internet.
  • Credentials stay put — the database username and password live on the machine you installed the agent on. Query Streams never receives them and cannot reach your database on its own.
  • Read-only, enforced — one statement at a time, SELECT and friends only. A write is rejected on your own machine before it is ever sent to the server, rather than relying on a permission somebody remembered to set.
  • Deploy as many agents as you like — one per site, region or cloud. Every data source they can see arrives in a single dropdown, so nobody has to know which agent hosts what.

What you get once a query is saved

  • Share the capability, not the SQL — a colleague or an outside partner can run your query and change its filters without ever seeing the statement behind it.
  • Filters from either direction — declare them yourself as @variables, or let the connector spot the literal values already sitting in your WHERE clause and offer those as dropdowns.
  • Read it from anywhere — Microsoft Excel, Google Sheets, Power BI, the REST API, AI assistants over MCP, the Query Builder and Nova all read the same saved query.
  • Run several at once — five saved queries into five worksheet tabs, streamed concurrently, however large the results.
  • Join it to anything else you have connected — another database, a business API, or a folder of files, in one read-only statement.

Cross-source SQL

Join Cloud SQL to the rest of your data

One statement can span Cloud SQL and your other connections at once. Each source runs only the part it can, streams the result back, and the join happens centrally — the sources never talk to each other and nothing is copied anywhere.

3 connections · 3 agents

Google Cloud SQL Managed · multi-engine
Microsoft SQL Server Relational engine
Stripe Payments & billing

One statement

-- nothing copied, nothing merged, nothing scheduled
SELECT   c.region, COUNT(*) AS orders, SUM(i.amount_due) AS invoiced
FROM     gcp_sales.public.orders1 f
JOIN     erp_sql.dbo.customers2   c ON c.id = f.customer_id
JOIN     billing.stripe.invoices3 i ON i.customer = c.stripe_id
GROUP BY c.region
ORDER BY invoiced DESC;

The three parts are connection, schema and table — and the connection name is whatever you called it. Illustrative columns; your tables will be your tables. Read-only applies to every piece: SELECT, WITH and EXPLAIN only, with a ceiling on how much any one source may hand over for a single query. How federated queries work

Connection details

What Cloud SQL needs

Engines
PostgreSQL, MySQL and SQL Server on one card
Address
The instance's private or public IP, or 127.0.0.1 through the Cloud SQL Auth Proxy — Cloud SQL has no hostname to point at
Ports
5432 PostgreSQL, 3306 MySQL, 1433 SQL Server — prefilled per engine, and cross-checked against the engine you picked
TLS
On by default for direct IP connections; off is correct through the Auth Proxy, which encrypts its own tunnel
Saved as
The engine you picked, with Cloud SQL kept as a badge — there is no connection type called Cloud SQL
Recognition
Because there is no hostname, the badge comes from the connection being created on this card; a plain connection made earlier to the same instance will not retrospectively show it
Permissions
A database user with SELECT on what you want read
Network
Outbound only from the agent. No public IP, no authorized-network entries, no ingress rule

Cloud SQL is the one hosted service in this family with nothing to sniff. Every other managed provider hands you a hostname with a recognisable suffix; Cloud SQL hands you an IP address, or a loopback address if you are using the Auth Proxy. That has one honest consequence worth stating plainly: the Cloud SQL badge comes from having created the connection on this card, so a connection you set up earlier as plain PostgreSQL pointing at the same instance will keep looking like plain PostgreSQL. It works identically either way — only the label differs.

The private-IP path is worth taking even though the public one is offered. An agent on a VM inside the VPC turns the whole connectivity question into nothing: no public IP on the instance, no authorized networks to maintain, no ingress rule, and no static address anywhere that somebody has to remember to update. The agent dials out; Cloud SQL never has to be findable.

For a cross-source query the qualifier follows the engine, because that is what the connection is saved as. A Cloud SQL PostgreSQL connection you called gcp_sales is written gcp_sales.public.orders, and the same instance on SQL Server would be gcp_sales.dbo.orders — joining to a folder of CSVs, an on-premises system of record or a billing API in one read-only statement.

Vendor documentation: cloud.google.com

FAQ

Questions about Google Cloud SQL

Which tools can read Google Cloud SQL data through Query Streams?

All of them, from one connection: Excel, Google Sheets, MCP, REST API, Airtable, Baserow, SeaTable, Smartsheet, Anvil, Power BI, scheduled alerts and reports. Connect the database once and every surface reads the same read-only connection — there is no per-tool setup and no second copy of the data.

Do I have to open a firewall port to my Google Cloud SQL database?

No. The Query Streams Network Agent runs inside your network and opens a single outbound encrypted connection. Nothing listens for inbound traffic, no VPN is required, and the database keeps its existing firewall rules.

Can Query Streams change data in Google Cloud SQL?

No. The agent enforces read-only at the point of execution — one statement at a time, SELECT and friends only. Credentials stay on the agent and are never sent to Query Streams.

What does Query Streams need to connect to Google Cloud SQL?

A reachable host, a role and its password — the agent carries the driver, so nothing is installed on the database. Engines: PostgreSQL, MySQL and SQL Server on one card. Address: The instance's private or public IP, or 127.0.0.1 through the Cloud SQL Auth Proxy — Cloud SQL has no hostname to point at. Ports: 5432 PostgreSQL, 3306 MySQL, 1433 SQL Server — prefilled per engine, and cross-checked against the engine you picked. TLS: On by default for direct IP connections; off is correct through the Auth Proxy, which encrypts its own tunnel.

Can I join Google Cloud SQL to another database in the same query?

Yes — that is a federated query. One statement can reference Google Cloud SQL and your other connections at once, written as connection.schema.table. Each source runs only the part it can and streams the result back; the join happens centrally, so the sources never connect to each other and nothing is copied or scheduled. Read-only applies to every piece — SELECT, WITH and EXPLAIN only — and there is a ceiling on how much any one source may hand over for a single query. Federated queries are a plan feature; the federated queries page carries the current source and size limits.

Is connecting Google Cloud SQL different from connecting PostgreSQL?

Only the connection string. Google Cloud SQL speaks the PostgreSQL wire protocol, so filters, scheduling, sharing, the Excel and Google Sheets add-ons and the MCP server all behave identically. The Cloud SQL card pre-fills the host, port and SSL settings that provider expects.

Is there a Cloud SQL to Excel guide?

Yes — it is the PostgreSQL guide, and it is correct for Google Cloud SQL as written. Cloud SQL speaks the PostgreSQL wire protocol, so Cloud SQL to Excel, Cloud SQL to Google Sheets and every other destination follow the same steps. The only Cloud SQL-specific part is the connection string, and the Cloud SQL card fills that in for you.

Put Cloud SQL where the work happens

Install the agent, point it at your database, and pick a destination.

Read-only Outbound only Credentials stay on the agent