我想:
psql -c "COPY ( SELECT * FROM "Users" LIMIT 10 ) TO STDOUT WITH CSV HEADER" > out.csv
然而,查询("Users"
)中的双引号被删除,psql返回Relation users does not exist
的错误。我试图逃避这个\"Users\"
的引号。但他们仍然被删除。我该怎么办?
答案 0 :(得分:7)
这是正确的答案(对我有用):
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
答案 1 :(得分:3)
psql -c 'COPY ( SELECT * FROM "Users" LIMIT 10 ) TO STDOUT WITH CSV HEADER' > out.csv
在bash中,您可以在字符串中使用单引号,前提是您不需要插入任何内容。当然,如果你的查询包含单引号,那不会起作用,但在你的情况下你应该没问题