Run a query in psql and output the result as CSV.
Clone or download
Failed to load latest commit information.
LICENSE First commit Sep 3, 2015 Update README with new options Jun 20, 2016
psql2csv Add options to set timezone and search_path params Jun 7, 2016


Run a query in psql and output the result as CSV.


Mac OS X

psql2csv is available on Homebrew.

$ brew install psql2csv


Grab the file psql2csv, put in somewhere in your $PATH, and make it executable:

$ curl > /usr/local/bin/psql2csv && chmod +x /usr/local/bin/psql2csv


psql2csv [OPTIONS] < QUERY
psql2csv [OPTIONS] QUERY


The query is assumed to be the contents of STDIN, if present, or the last argument. All other arguments are forwarded to psql except for these:

-?, --help                 show this help, then exit
--delimiter=DELIMITER      set the field delimiter (default: ,)
--quote=QUOTE              set the quote delimiter (default: ")
--escape=ESCAPE            set the escape character (default: QUOTE)
--null=NULL                set the string representing NULL; printed without quotes (default: empty string)
--force-quote=FORCE_QUOTE  set the columns to be force quoted; comma separated list of columns or * for all (default: none)
--encoding=ENCODING        set the output encoding; Excel likes latin1 (default: UTF8)
--no-header                do not output a header
--timezone=TIMEZONE        set the timezone config before running the query
--search-path=SEARCH_PATH  set the search_path config before running the query
--dry-run                  print the COPY statement that would be run without actually running it

Example Usage

$ psql2csv dbname "select * from table" > data.csv

$ psql2csv dbname < query.sql > data.csv

$ psql2csv --no-header --delimiter=$'\t' --encoding=latin1 dbname <<sql
> FROM some_table
> WHERE some_condition
> LIMIT 10
> sql

Further Help


Philipe Fatio (@fphilipe)