首页 > 解决方案 > 如何用包含相同选择语句的文件名替换 (select current_timestamp)?

问题描述

我正在使用 PSQL。我的命令行是:

$\copy (select current_timestamp) to '/home/myname/outputfile.txt'

我想知道,如何用包含相同选择语句的文件名替换“(选择 current_Timestamp)”?

前任:

$\copy (My_SQL_FILE.sql) to '/home/myname/outputfile.txt'

我试过谷歌搜索,但似乎找不到答案。

$\copy (my_Sql_file.sql) to '/home/myname/outputfile.txt'

不工作

标签: postgresqlunixpsqlpostgresql-copy

解决方案


您想在\copy语句中运行存储在文件中的查询,即执行该查询并将输出存储在文件中?这是可行的。

我自己遇到过这个用例并写了psql2csv. 它接受与查询相同的参数psql并另外接受一个查询作为参数(或通过 STDIN)并将输出打印到 STDOUT。

因此,您可以按如下方式使用它:

$ psql2csv [CONNECTION_OPTIONS] < My_SQL_FILE.sql > /home/myname/outputfile.txt

基本上要做psql2csv的是将您的查询转换为

COPY ($YOUR_QUERY) TO STDOUT WITH (FORMAT csv, ENCODING 'UTF8', HEADER true)

并通过psql. 请注意,您可以自定义一堆东西,例如标题、分隔符等。


推荐阅读