I'm having problem exporting my PostgreSQL output from a shell to a csv file.
My SQL script is called script.sql
.
I typed the following command in my shell:
psql congress -af script.sql &> filename.csv
But when I opened the filename.csv
file, values of all the columns are squeezed in one column in the Excel csv (see the attached screenshot).
Then I tried another way. I edited my script.sql
to be:
Copy (Select * From ...) To '/tmp/filename.csv' With CSV;
Then I typed the following command in the shell within the database dbname
.
\i script.sql
The output is:
COPY 162
Well, my output query has 162 rows.
So the 162 rows of my output table have been copied in the shell. How can I paste or move them to a csv file?
Or, if I'm going to use the filename.csv (screenshot is attached), how can I fix the format of that csv/Excel file?
In PgAdmin export option is available in file menu. Execute the query, and then we can view the data in the Output pane. Click on the menu FILE -> EXPORT from query window.
Modern syntax:
COPY (SELECT * FROM ...) TO '/tmp/filename.csv' (FORMAT csv);
So the 162 rows of my output table have been copied in the shell. How can I paste or move them to a csv file?
The result is the CSV file. Open it with any spreadsheet program using matching delimiters. The manual:
The default is a tab character in text format, a comma in CSV format
The psql meta command \copy
is a wrapper around the SQL COPY
function. It writes and reads files local to the client (while COPY
uses files local to the server) and does not require superuser privileges.
See:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With