如何将 PostgreSQL 查询输出导出为 CSV 文件
如何将 PostgreSQL 查询输出导出为 CSV 文件
我在将我的PostgreSQL输出从shell导出到csv文件时遇到了问题。
我的SQL脚本名字叫做script.sql
。
我在shell中输入了以下命令:
psql congress -af script.sql &> filename.csv
但是当我打开filename.csv
文件时,所有列的值都被挤在了一个单元格中(见附加的屏幕截图)。
然后我尝试了另一种方式。我将script.sql
进行了编辑:
Copy (Select * From ...) To '/tmp/filename.csv' With CSV;
然后我在数据库dbname
内的shell中输入了以下命令。
\i script.sql
输出结果是:
COPY 162
好吧,我的输出查询有162行。
所以我的输出表的162行已经被复制到shell中。我该如何将它们粘贴或移动到csv文件中?
或者,如果我要使用文件filename.csv
(附加屏幕截图),我该如何修复那个csv / Excel文件的格式?
admin 更改状态以发布 2023年5月20日
大多数之前的回答都是正确的,这里提供更多的细节,只适用于linux。
1.创建一个名为my_query.sql的文件。
\COPY (select * from some_table) TO '/tmp/some_file.csv' (format CSV);
2.在更新了数据库和文件路径变量之后运行以下命令。
psql "host=YOUR_HOST port=YOUR_PORT dbname=YOUR_DB user=YOUR_USER password=YOUR_PASS" -af my_query.sql
提示:如果您对表执行select *操作且表很大,则应谨慎对待可用的空闲磁盘空间,否则可能会耗尽空间。