postgresql - 将 Postgres 数据库导出到 CSV 文件

标签 postgresql csv export

我想将 Postgres 数据库导出到 CSV 文件中。这可能吗?

如果可以,那我该怎么做呢?我看到我们可以将特定表转换为 CSV 文件,但我不知道整个数据库。

最佳答案

我制作了这个 pl/pgsql 函数来创建每个表一个 .csv 文件(不包括 View ,感谢@tarikki):

CREATE OR REPLACE FUNCTION db_to_csv(path TEXT) RETURNS void AS $$
declare
   tables RECORD;
   statement TEXT;
begin
FOR tables IN 
   SELECT (table_schema || '.' || table_name) AS schema_table
   FROM information_schema.tables t INNER JOIN information_schema.schemata s 
   ON s.schema_name = t.table_schema 
   WHERE t.table_schema NOT IN ('pg_catalog', 'information_schema')
   AND t.table_type NOT IN ('VIEW')
   ORDER BY schema_table
LOOP
   statement := 'COPY ' || tables.schema_table || ' TO ''' || path || '/' || tables.schema_table || '.csv' ||''' DELIMITER '';'' CSV HEADER';
   EXECUTE statement;
END LOOP;
return;  
end;
$$ LANGUAGE plpgsql;

我这样使用它:

SELECT db_to_csv('/home/user/dir');
-- this will create one csv file per table, in /home/user/dir/

关于postgresql - 将 Postgres 数据库导出到 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17463299/

相关文章:

python - 使用来自另一个 csv 文件的列创建一个新的 csv 文件

php - Laravel:如何将 Excel 文件存储在给定的路径中?

postgresql - 在函数中更改架构名称

sql - 选择逗号分隔值列的不同值,不包括 PostgreSQL 中的子集

PostgreSQL 表要大吗?内存不足?

python - 在Python中将行添加到按ID排序的CSV中,而不将整个文件读入内存

mysql - 由 csv 文件加载数据填充的 mysql 表没有结果

php - 从一个用户安装导出和导入数据到另一个

mysql - 将 MySQL 表从一台服务器导入到另一台服务器

sql - 如何查询最后 3 次出现的所有行的平均数据