mfl*_*www 20 csv postgresql shell export-to-excel export-to-csv
我在将PostgreSQL输出从shell导出到csv文件时遇到问题.
我的SQL脚本被调用script.sql
.
我在shell中输入以下命令:
psql congress -af script.sql &> filename.csv
Run Code Online (Sandbox Code Playgroud)
但是当我打开filename.csv
文件时,Excel csv中的所有列的值都会被挤压到一列中(请参阅附带的屏幕截图).
然后我尝试了另一种方式.我编辑我script.sql
的是:
Copy (Select * From ...) To '/tmp/filename.csv' With CSV;
Run Code Online (Sandbox Code Playgroud)
然后我在数据库中的shell中键入以下命令dbname
.
\i script.sql
Run Code Online (Sandbox Code Playgroud)
输出是:
COPY 162
Run Code Online (Sandbox Code Playgroud)
好吧,我的输出查询有162行.
所以我的输出表的162行已经复制到shell中.如何将它们粘贴或移动到csv文件?
或者,如果我要使用filename.csv(附带截图),我该如何修复该csv/Excel文件的格式?
Erw*_*ter 34
现代语法:
COPY (SELECT * FROM ...) TO '/tmp/filename.csv' (format CSV);
Run Code Online (Sandbox Code Playgroud)
所以我的输出表的162行已经复制到shell中.如何将它们粘贴或移动到csv文件?
结果是 CSV文件.使用匹配的分隔符,使用任何电子表格程序打开它.每个文件:
默认值为文本格式的制表符,CSV格式的逗号
与Patrick评论一样,您可以\copy
以类似的方式使用相应的psql元命令.它写入(并读取)客户端本地文件,不需要超级用户权限.
在这些相关答案中有更多解释:
大多数以前的答案都是正确的,这里有更多详细信息并且仅适用于 Linux
1.创建一个类似my_query.sql的文件
\COPY (select * from some_table) TO '/tmp/some_file.csv' (format CSV);
Run Code Online (Sandbox Code Playgroud)
2.更新数据库和文件路径的变量后,运行以下命令。
psql "host=YOUR_HOST port=YOUR_PORT dbname=YOUR_DB user=YOUR_USER password=YOUR_PASS" -af my_query.sql
Run Code Online (Sandbox Code Playgroud)
提示:如果您从 your_table 中执行 select * 操作,请注意可用的可用磁盘空间,如果表很大,则可能会耗尽空间。
归档时间: |
|
查看次数: |
43210 次 |
最近记录: |