Zer*_*uno 3 postgresql export psql
我正在使用脚本和 psql 运行多个查询。我还使用 COPY TO 命令将结果导出到 a.csv。但是,当我想将结果附加到 a.csv 时,这会覆盖文件 a.csv。
是否可以使用 COPY TO 语法,也许我缺少一些参数?还是我应该考虑使用其他工具?
您可以在命令行上使用\copy
psql(它封装 SQL COPY
)中的 meta 命令,将其发送到并重定向输出以附加到文件 -而不是:stdout
>>
>
psql -c '\copy (SELECT 1, 2) to stdout' >> /path/to/file_to_append_to.csv
Run Code Online (Sandbox Code Playgroud)
(您可能需要更多连接参数。)
您也可以使用 SQL COPY
:
psql -c 'COPY (SELECT 1, 2) TO STDOUT' >> /path/to/file_to_append_to.csv
Run Code Online (Sandbox Code Playgroud)
但使用它通常更方便,\copy
因为(引用手册):
文件可访问性和访问权限在使用时取决于客户端而不是服务器
\copy
。
或者,就像Abelisto 评论的那样,从内部 psql或任何其他客户端 - 如果该程序cat
可用(基本上在所有 *nix 操作系统上):
COPY (SELECT 1, 2) TO PROGRAM 'cat >> /path/to/file_to_append_to.csv'
Run Code Online (Sandbox Code Playgroud)
或者,仍然在 psql 内部,在任何系统上,您都可以使用以下命令设置当前目录和输出文件:
\cd /path/to/
\o file_to_append_to.csv
Run Code Online (Sandbox Code Playgroud)
如果文件尚不存在,则会创建(仅)该文件。
然后你也可以 SQL COPY
(或者仍然\copy
可以):
COPY (SELECT 1, 2) TO STDOUT;
Run Code Online (Sandbox Code Playgroud)
输出将附加到文件中。
归档时间: |
|
查看次数: |
13052 次 |
最近记录: |