macos - 如何将 SQL 查询作为包含双引号的参数传递给 psql

标签 macos bash postgresql psql

我正在尝试:

psql -c "COPY ( SELECT * FROM "Users" LIMIT 10 ) TO STDOUT WITH CSV HEADER" > out.csv

但是,查询 ("Users") 中的双引号被删除,psql 返回错误,指出 Relation users does not exist。我试图转义这样的引号 \"Users\"。但它们仍然被删除。我能做什么?

最佳答案

这是正确的答案(对我有用):

echo 'COPY ( SELECT * FROM "Users" LIMIT 10 ) TO STDOUT WITH CSV HEADER' | psql > out.csv

甚至更好(它允许使用单引号和双引号而无需任何转义):

psql > out.csv <<EOT
COPY
(SELECT id, email, "displayName", "firstName", "lastName", "displayName", 'some str' AS "someStr" FROM "Users" LIMIT 10)
TO STDOUT WITH CSV HEADER;
EOT

关于macos - 如何将 SQL 查询作为包含双引号的参数传递给 psql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26078533/

相关文章:

Postgresql - 在列具有重复值的行中增加计数器

postgresql - 使用安装在不同 Postgres Schema 中的 Postgis 扩展

macos - 在给定文件描述符的情况下确定 POSIX/OS X 上文件大小的可靠方法

bash - awk 命令对行求和并在特定条件下过滤掉

git - 自动化脚本确定 git 是否真正安装在 OS X 上的最佳方法

bash - 如何知道 Elasticsearch 中是否安装了 X-Pack?

linux - 什么时候用引号括起 shell 变量?

postgresql - 在 Postgres 中聚合多个字段时填写缺失的行

macos - 只需在 Cocoa 中制作一个标签说“Hello World”(Mac 编程)

python - pip 安装 MySQL-python