如果我不是超级用户且无法使用.csv
命令,如何将表导出到Postgres中的copy
?
我仍然可以通过右键单击“导入”按钮将数据导入到postgres,但没有导出选项。
答案 0 :(得分:34)
使用psql并将流重定向到文件:
psql -U <USER> -d <DB_NAME> -c "COPY <YOUR_TABLE> TO stdout DELIMITER ',' CSV HEADER;" > file.csv
答案 1 :(得分:3)
COPY your_table TO '/path/to/your/file.csv' DELIMITER ',' CSV HEADER;
有关详细信息,请转到此manual
答案 2 :(得分:2)
除了his answer你可以做的marvinorez所建议的,psql
:
\copy your_table TO '/path/to/your/file.csv' DELIMITER ',' CSV HEADER
另一方面,从pgadmin3
,您也可以通过右键单击其名称然后选择查看数据来打开表格。然后,您可以单击表格的左上角(列名称行与行号列连接的位置,灰色空方块)以选择所有行。最后,您可以使用 Ctrl C 或编辑 - &gt;进行复制。在菜单中复制。数据将以csv格式复制到剪贴板,由分号;
分隔。
然后,您可以将其粘贴到LibreOffice Calc,MS Excel中以进行显示。
如果你的表很大(什么是大的,取决于你的机器的RAM数量等),它可能不适合剪贴板,所以在这种情况下,我不会使用这种方法,而是第一个( \副本)。
答案 3 :(得分:0)
最简单的方法确实是我想的复制品。如果你不能这样做,那么如何使用pg_dump然后用sed,AWK甚至文本编辑器转换输出文件呢?即使在可接受的时间内搜索和替换,这也应该有效:)
答案 4 :(得分:0)
我遇到了超级用户和运行psql的麻烦,我采用了简单的愚蠢方式使用PGAdmin III。
1)SELECT * FROM;
在菜单栏中选择“查询”之前,选择“查询到文件”。
这会将其保存到您选择的文件夹中。可能要玩有关如何导出的设置,它喜欢引用和;。
2)SELECT * FROM;
正常运行,然后通过在“文件”菜单中选择“导出”来保存输出。这将保存为.csv
这对于大型表来说不是一个好方法。我这样做的表是几十万行和10-30列。大表可能有问题。