While working with databases like PostgreSQL, exporting a table into a CSV file or importing a CSV file into a Postgres table is a very common task. In PostgreSQL, you have multiple ways to export a table into a CSV file, such as copy statement, \copy command, or pgAdmin.
In this write-up, we will learn different methods to export a Postgres table into a CSV file. So, let’s begin.
How Does the COPY Statement Work in PostgreSQL?
Copy statement is the simplest way to export a table into a CSV file. To achieve this purpose, use the following syntax:
COPY tab_name TO 'Path/file_name.csv' CSV HEADER;
- COPY is a statement.
- tab_name is a table to be exported.
- Path represents a directory where the table will be exported.
- File_name.csv is the exported CSV file.
Example #1:
We have created a table named book_info. Let's list down the table details using the SELECT command:
SELECT * FROM book_info;
![img](/media/images/image_PwA4SXB.width-1200.png)
Now run the following command to export the book_info table into a CSV file:
COPY book_info TO 'C:\Windows\Temp\book_info.csv' CSV HEADER;
![img](/media/images/image_7WCcSDG.width-1200.png)
The output shows that five records have been exported. If everything goes fine, you will get the following results:
![img](/media/images/image_I1IRMKo.width-1200.png)
The output shows that the desired table has been exported to the CSV file successfully.
Example #2:
You can specify a delimiter of your choice to separate the table’s values. For instance, the below statement will provide the “;” separated values:
COPY book_info TO 'C:\Windows\Temp\book_info1.csv' DELIMITER ';' CSV HEADER;
![img](/media/images/image_PihYRwR.width-1200.png)
Open the CSV file from the targeted location to see the exported values:
![img](/media/images/image_4lAmOkZ.width-1200.png)
The output shows that the desired table has been exported to the CSV file. And this time, values are separated with “;”.
Example #3:
Execute the below statement to export only specific columns of a Postgres table:
COPY book_info(book_name) TO 'C:\Windows\Temp\book_info.csv' CSV HEADER;
![img](/media/images/image_TgIsGIX.width-1200.png)
Let’s open the CSV file to see the exported values:
![img](/media/images/image_1lw0jt7.width-1200.png)
In this way, you can export only specific columns of a table.
How Does the \COPY Command Work in PostgreSQL?
The \COPY is an inbuilt command that is used for exporting a PostgreSQL table to a CSV file. If you have limited privileges, then you can use the \COPY command because it doesn’t require superuser privileges. Follow the below-given syntax for the client-side export of CSV files:
\COPY Tab_Name to 'Path/file_name.csv' CSV HEADER;
Example
For exporting the desired table to a CSV file, execute the \COPY command:
\COPY (SELECT * FROM book_info) to 'C:\Windows\Temp\bookInfo.csv' with CSV;
![img](/media/images/image_UPbLJQT.width-1200.png)
On successful execution of the \COPY command, following data will be exported to the CSV file:
![img](/media/images/image_nxMoHy3.width-1200.png)
This is how you can export a Postgres Table to a CSV file using the COPY statement or \COPY command.
Conclusion
In PostgreSQL, there are multiple ways to export a table into a CSV file, such as the COPY statement or \COPY command. Using these commands, you can export the entire Postgres table or some specific columns of a table into a CSV file. This post explained the working of the COPY statement and \COPY command with examples.