Relational engine
Connect PostgreSQL to Excel, Sheets and AI
Open-source relational database for complex queries and ACID transactions. Direct, pooled, or any of the 27 hosted-Postgres cards that share this wire protocol.
One connection, every surface
Where your PostgreSQL data can go
Connect PostgreSQL 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.
PostgreSQL to Excel
Microsoft Excel · Excel add-in
Pull live PostgreSQL results straight into a worksheet and refresh them on demand — desktop Excel, Excel Online, Microsoft 365.
Read the guidePostgreSQL to Google Sheets
Sheets add-on
Run a saved PostgreSQL query from the sidebar and drop the rows into the sheet. Shared collaborators can refresh it themselves.
Read the guidePostgreSQL MCP server
Claude, Cursor and MCP clients
Give an AI assistant read-only access to PostgreSQL with the schema it needs to write correct SQL — no credentials in the chat.
Read the guidePostgreSQL REST API
HTTP endpoint
Publish a PostgreSQL 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 guidePostgreSQL to Airtable
Automation platform
Sync PostgreSQL rows into an Airtable base on a schedule, or fetch them inside an Airtable automation script.
Read the guidePostgreSQL to Baserow
Automation platform
Feed a Baserow table from PostgreSQL over the REST endpoint — self-hosted or Baserow cloud.
Read the guidePostgreSQL to SeaTable
Automation platform
Keep a SeaTable base current with PostgreSQL data without exporting a file or exposing the database.
Read the guidePostgreSQL to Smartsheet
Automation platform
Push PostgreSQL results into a Smartsheet grid so plans and reports read from the source system, not last week's export.
Read the guidePostgreSQL to Anvil
Anvil Works · App platform
Back an Anvil Python app with PostgreSQL through the REST endpoint instead of embedding database credentials in the app.
Read the guidePostgreSQL to Power BI
Power Query M
Paste the generated Power Query M into the Power BI Advanced Editor and the report reads live PostgreSQL results over HTTPS — no ODBC driver, no database port opened.
How Power BI works no PostgreSQL walkthrough written yetPostgreSQL alerts and reports
Slack · Discord · Email · Webhook
Put a PostgreSQL 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 PostgreSQL walkthrough written yetHow it works
5 steps, no inbound firewall change
Install the Network Agent on a machine that can already reach the database. It dials out to us; nothing about Postgres is exposed to the internet.
Paste the connection string from your provider, or type host, port, database, user and password yourself — a postgresql:// URI is pulled apart into the fields for you.
If the host belongs to a service the agent recognises, TLS is switched on and the right pooler behaviour is applied without you choosing anything.
Pick the schemas worth exposing. The one you choose is applied with search_path on every query, so unqualified table names resolve exactly as they do in psql.
Save a query and read it from Excel, Sheets, Power BI, MCP, Nova or REST — and hand it to someone else without handing over the SQL.
Feature deep-dive
What PostgreSQL gives you
It already knows your Postgres host
Managed Postgres is where most connection attempts actually fail, and almost never because of the password. It is a pooler on a port nobody documents, or TLS that the provider requires but the client left off. The agent carries a table of 27 hosted Postgres services and matches on hostname, so those decisions are already made.
- TLS is forced, not offered — if the host matches a known provider the connection is encrypted whether or not the box is ticked.
- Odd ports are expected — Crunchy on 5431, Azure and PlanetScale on 6432, DigitalOcean on 25061, Supabase's transaction pooler on 6543.
- Transaction poolers are handled — PgBouncer and Supavisor in transaction mode break prepared statements. When one is detected the agent turns off statement caching and connection reset instead of failing halfway through your report.
- Neon's pooled endpoint, with -pooler in the middle of the hostname, is recognised as the same database as the direct one.
Numbers survive the trip
A reporting tool that quietly turns an exact number into a floating-point one is worse than a tool that refuses, because you find out at year end. PostgreSQL lets you declare numeric with no precision at all, and that value has no safe float to land in.
- numeric with no declared precision is carried through losslessly rather than rounded into a double.
- So is numeric declared wider than 28 digits — beyond what a fixed decimal can hold, the exact digits are kept.
- json and jsonb arrive as text you can parse, uuid as its lowercase canonical form, interval as an ISO-8601 duration.
- Arrays and composite types come through as their text form rather than being dropped from the result.
Filters stay parameters
When a filter has many values — forty product codes, a list of regions — most tools paste them into the SQL as text. Query Streams binds the whole list as a single PostgreSQL array parameter, so the statement your database sees is the same one every time regardless of how many values the reader picked.
-- One @variable, any number of values, one prepared statement
SELECT region, COUNT(*) AS orders, SUM(total) AS revenue
FROM orders
WHERE status = ANY(@statuses)
AND placed_at >= @since
GROUP BY region
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 PostgreSQL to the rest of your data
One statement can span PostgreSQL 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
One statement
-- nothing copied, nothing merged, nothing scheduled
SELECT c.region, COUNT(*) AS orders, SUM(i.amount_due) AS invoiced
FROM pg_reporting.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 PostgreSQL needs
- Port
- 5432 by default, any port accepted — pooler ports on recognised hosts are already known
- Encryption
- TLS on by default (sslmode=require), and forced regardless of the setting on the 27 recognised hosted providers
- Credentials
- A database username and password, held on the agent. Query Streams never receives them
- Driver
- Npgsql 9.0.3, bundled with the agent — nothing to install on the database server or the client
- Schema
- public unless you pick another; the one you pick is applied with search_path on every query
- Exact numbers
- numeric with no declared precision, or wider than 28 digits, is carried losslessly instead of rounded
- Pooling
- On. Transaction-mode poolers (PgBouncer, Supavisor) are detected and their prepared-statement limits worked around
- Timeouts
- 30 seconds to connect, 30 seconds per statement while streaming
- Read-only
- Enforced on your own machine before the statement is sent to the server
Nothing is copied. The agent runs your SELECT against the live database and streams the rows straight through, so what lands in the spreadsheet is what the database holds at that moment rather than the state of an overnight extract. There is no warehouse in the middle to fall behind and no schedule to miss.
One agent can serve many databases, and you can run as many agents as you have places to put them — one in the office, one in each cloud region. Every data source they can reach shows up in a single dropdown, so the person writing the query never has to know which machine is doing the reaching.
Vendor documentation: www.postgresql.org
FAQ
Questions about PostgreSQL
Which tools can read PostgreSQL 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 PostgreSQL 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 PostgreSQL?
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 PostgreSQL?
A reachable host, a role and its password — the agent carries the driver, so nothing is installed on the database. Port: 5432 by default, any port accepted — pooler ports on recognised hosts are already known. Encryption: TLS on by default (sslmode=require), and forced regardless of the setting on the 27 recognised hosted providers. Credentials: A database username and password, held on the agent. Query Streams never receives them. Driver: Npgsql 9.0.3, bundled with the agent — nothing to install on the database server or the client.
Can I join PostgreSQL to another database in the same query?
Yes — that is a federated query. One statement can reference PostgreSQL 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.
Put PostgreSQL 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

