我想将 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/