Export a PostgreSQL Table to a CSV File

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

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

The output shows that five records have been exported. If everything goes fine, you will get the following results:

img

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

Open the CSV file from the targeted location to see the exported values:

img

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

Let’s open the CSV file to see the exported values:

img

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

On successful execution of the \COPY command, following data will be exported to the CSV file:

img

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.