📜  PostgreSQL – 将 PostgreSQL 表导出到 CSV 文件(1)

📅  最后修改于: 2023-12-03 15:03:49.546000             🧑  作者: Mango

PostgreSQL – 将 PostgreSQL 表导出到 CSV 文件

在 PostgreSQL 数据库中,可以使用 COPY 命令将表数据导出到 CSV 文件中。COPY 命令支持从标准输入输出或者文件进行数据的导入导出。在本文中,我们将介绍如何使用 COPY 命令将 PostgreSQL 表中的数据导出到 CSV 文件。

导出单个表

使用 COPY 命令导出单个表的数据非常简单。只需要在 SQL 命令行中执行以下命令即可:

COPY table_name TO '/path/to/csv/file.csv' DELIMITER ',' CSV HEADER;

其中,table_name 是想要导出的表名,/path/to/csv/file.csv 是 CSV 文件的路径,delimiter 参数用于设置字段分隔符,默认为制表符,此处我们设置为逗号分隔,CSV 参数表示文件格式为 CSV,HEADER 参数表示在第一行中包含列名。

如果你不指定绝对路径而是相对路径,那么 CSV 文件将被保存在服务器当前工作目录中。

导出多个表

如果你想要同时导出多个表的数据,只需要编写一个脚本将多个 COPY 命令组合起来执行。以下是一个简单的 Bash 脚本示例:

#!/bin/bash

# set the path to the CSV file directory
CSV_DIR='/path/to/csv'

# export table1
psql -U user_name -d db_name -c "COPY table1 TO '${CSV_DIR}/table1.csv' DELIMITER ',' CSV HEADER;"

# export table2
psql -U user_name -d db_name -c "COPY table2 TO '${CSV_DIR}/table2.csv' DELIMITER ',' CSV HEADER;"

# export table3
psql -U user_name -d db_name -c "COPY table3 TO '${CSV_DIR}/table3.csv' DELIMITER ',' CSV HEADER;"

其中,${CSV_DIR} 表示导出的 CSV 文件将被保存在哪个目录下,table1table2table3 分别为需要导出的表名。

附加选项

COPY 命令还支持一些其他的选项,可以满足不同的需求。以下是一些常用的选项:

  • FORMAT
    • 用于指定文件格式,例如:FORMAT csvFORMAT text 等。
  • DELIMITER
    • 用于指定字段分隔符,例如:DELIMITER ','DELIMITER '\t' 等。
  • NULL
    • 用于指定空值的表示方式,例如:NULL 'NA'NULL '' 等。
  • ENCODING
    • 用于指定文件编码,例如:ENCODING 'UTF8'ENCODING 'GBK' 等。
总结

使用 COPY 命令将 PostgreSQL 表导出到 CSV 文件非常方便。您可以使用单个 COPY 命令导出单个表,也可以编写脚本批量导出多个表的数据。通过添加不同的选项,您可以自定义文件格式、字段分隔符等。