Want to export PostgreSQL data to CSV file via Command Line Interface (CLI) on Linux (Ubuntu/RedHat/CentOS…)?
Using pg-cmd, Command Line Interface (CLI) client for PostgreSQL, you can unload PostgreSQL data to CSV/TSV/TXT easily and fast. Direct Interaction or Scripting and Automation.
- No need to install PostgreSQL client library.
- Convenient to deploy to cloud. No need to run installation file, just uncompress and run, immediately.
- Commands are entered into a terminal or command prompt, accessed from local or remote (like SSH).
- Support Windows, Linux, and MacOS.
Export PostgreSQL data to CSV/TSV/TXT via command line on Linux (Ubuntu/RedHat/CentOS…)
1. Unload Table.
1) In interactive mode:
pg-cmd> unload
> table=media_messages
> datafile=/data/media_messages.csv
> delimiter=,
> quote="
> header=y;
2) In batch mode:
pg-cmd dsn="pan:withdata@192.168.0.102/test" task=unload table=media_messages datafile=/data/media_messages.csv delimiter=, quote=" header=y quit=y
2. Unload Query.
1) In interactive mode:
pg-cmd> unload
> query="select * from media_messages where id > 100"
> datafile=/data/media_messages.csv
> delimiter=,
> quote="
> header=y;
2) In batch mode:
pg-cmd dsn="pan:withdata@192.168.0.102/test" task=unload query="select * from media_messages where id > 100" datafile=/data/media_messages.csv delimiter=, quote=" header=y quit=y
3. Unload All Tables.
1) In interactive mode:
pg-cmd> unload
> table=all
> folder=/data/tables_data
> delimiter=,
> quote="
> header=y;
2) In batch mode:
pg-cmd dsn="pan:withdata@192.168.0.102/test" task=unload table=all folder=/data/tables_data delimiter=, quote=" header=y quit=y
See parameters detail.
More about pg-cmd – Command Line Interface (CLI) tool for PostgreSQL
PostgreSQL → CSV reference
Type mapping
| Value kind | in PostgreSQL | in CSV |
|---|---|---|
| Int | integer | 1234 |
| Bigint | bigint | 9007199254740993 |
| Decimal | numeric(p,s) | 1234.56 |
| Float | double precision | 1.234e+10 |
| Text | varchar(n) | quoted only when it contains a comma or a quote |
| Long text | text | must be quoted; line breaks inside force multi-line records |
| Date | date | 2026-09-18 |
| Datetime | timestamp | 2026-09-18 14:30:00 |
| Binary | bytea | not representable - base64 or hex string |
| Boolean | boolean | TRUE / FALSE, or 1 / 0 depending on the writer |
| JSON | jsonb | the whole JSON value quoted, with internal quotes doubled |
Dialect differences
PostgreSQL is a database server and CSV is a file format, so the gap is wider than a dialect difference – the rows below are where values and structure stop lining up.
| Property | in PostgreSQL | in CSV |
|---|---|---|
| port | 5432 | — |
| identifiers | "double quotes" | Double quotes; a literal quote is doubled ("" ) |
| row limit | LIMIT n | — |
| dates | timestamp, timestamptz, date, time | Conventional text: 2026-09-18 or 2026-09-18 14:30:00 |
| long text | TEXT | — |
| binary | BYTEA | Not supported |
| separator | — | Comma "," |
| encoding | — | No declaration - UTF-8 works only with a BOM |
| typing | — | None - every field is text |
| shape | Tables of rows and columns | Flat table, optional header row |
| ceiling | — | No formal limit; row count bounded by memory |
Command line
| Side | Command |
|---|---|
| PostgreSQL | pg_dump or COPY ... TO |
| PostgreSQL (load) | COPY ... FROM |
Convert your data online, free
Free in-browser converters for CSV, Excel, JSON, XML and SQL: Withdata Online Data Conversion. Large files, batch conversion or scheduling? See the offline desktop apps, or browse all data conversion tools.
