如何编写postgresql脚本将数据从表导出到csv文件

时间:2011-01-27 05:07:38

标签: postgresql

我只想编写一个脚本,查找特定postgresql数据中的表,并将整个数据转换/导出到单个csv文件

帮助我开始使用postgresql中的示例脚本

1 个答案:

答案 0 :(得分:2)

您可以通过查询information_schema.tables视图来获取表格:

dwh=> \d information_schema.tables 
                       View "information_schema.tables"
            Column            |               Type                | Modifiers 
------------------------------+-----------------------------------+-----------
 table_catalog                | information_schema.sql_identifier | 
 table_schema                 | information_schema.sql_identifier | 
 table_name                   | information_schema.sql_identifier | 
 table_type                   | information_schema.character_data | 
 self_referencing_column_name | information_schema.sql_identifier | 
 reference_generation         | information_schema.character_data | 
 user_defined_type_catalog    | information_schema.sql_identifier | 
 user_defined_type_schema     | information_schema.sql_identifier | 
 user_defined_type_name       | information_schema.sql_identifier | 
 is_insertable_into           | information_schema.character_data | 
 is_typed                     | information_schema.character_data | 
 commit_action                | information_schema.character_data | 

并且列的类似视图:information_schema.columns。此外,psql有选项-E,它显示隐藏的查询,即psql命令发出的查询,如'\ d',...

Postgres有COPY命令(http://www.postgresql.org/docs/8.4/interactive/sql-copy.html),但你必须是数据库超级用户(postgres)才能将它与文件一起使用(你可以使用COPY) ... STDOUT HEADER CSV)。

快速&脏shell脚本:

psql ... -A -t -U dwh -c "select '\\\copy ' || table_name || ' to ''' || table_name || '.csv'' csv header' from information_schema.tables" | psql ...

您必须使用连接参数替换“...”