使用\ copy - psql将数据从表导出到CSV文件

时间:2018-03-10 20:18:36

标签: database bash postgresql psql

我有一个bash脚本连接到postgres数据库(版本9.5)并运行copy命令来生成CSV文件。它没有任何问题。

pg-source-query() {
    psql --quiet "$DATABASE_SOURCE_URL" <<< $'\set ON_ERROR_STOP true \n'"$1"
}
sql_stm="\copy (SELECT * FROM <table_name>) to '<file_path>' with csv"
pg-target-query "$sql_stm" 

现在我需要使用 SET 运行相同的select命令,如下所示。

sql_stm="\copy (SET "request.user_id" = <user_id>); SELECT * FROM <table_name> to 'C:\tmp\persons_client.csv' with csv"

现在我收到了错误消息。 错误:语法错误或接近&#34; SET&#34;

我只是想知道为什么我无法在 / Copy(....)中运行 SET

或者我做错了什么?

谢谢

1 个答案:

答案 0 :(得分:0)

好的,最后我找到了答案。

sql_stm="(SET "request.user_id" = <user_id>); \copy SELECT * FROM <table_name> to 'C:\tmp\persons_client.csv' with csv"

诀窍!