一個說法,我想:如何通過SQL查詢使用psql爲包含雙引號
psql -c "COPY (SELECT * FROM "Users" LIMIT 10) TO STDOUT WITH CSV HEADER" > out.csv
內查詢("Users"
),但雙引號被移除和psql將返回錯誤Relation users does not exist
。我試圖逃避像這樣的報價\"Users\"
。但他們仍然被刪除。我能做什麼?
一個說法,我想:如何通過SQL查詢使用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
psql -c 'COPY (SELECT * FROM "Users" LIMIT 10) TO STDOUT WITH CSV HEADER' > out.csv
在bash中,您可以在字符串中使用單引號,前提是您不需要插入任何內容。當然,如果您的查詢中包含單引號,這是行不通的,但在你的情況,你應該罰款
當我必須在我的SQL查詢中使用雙引號和單引號時,我可以做些什麼? – user606521 2014-09-27 20:18:55
我試過你寫的東西,但它仍然從查詢中刪除雙引號 - 也許這是由psql出於某種原因完成的? – user606521 2014-09-27 20:20:23
另一個很好的理由,以避免需要引用標識符... – 2014-09-27 22:27:39
所以你說,所有的表名和列名應爲小寫? – user606521 2014-09-27 23:14:35