将包含多行的查询结果存储到csv中,并从用户

时间:2018-04-25 06:47:59

标签: sh psql greenplum

我正在尝试将Greenplum查询结果存储到csv中,但它只存储一行。我想存储多行。有人能帮忙吗。 我已经尝试了下面但它只存储了一行。

r= `psql -A -t -q  -h $hostname -U $username  -d $dbname <<-THE_END
COPY(select * From ${gschema}.${gtable} order by ${key} limit 3) TO STDOUT with NULL as ' ' 
THE_END` > /home/gp.csv

我也在下面尝试过存储结果,但我无法在下面的查询中将表名作为参数传递。对于标准表名,输出是所需的。

psql -h $hostname -U $username  -d $dbname -c "COPY (select * from table_name order by key limit 3) TO STDOUT "> /home/gp.csv

任何人都可以帮助我。 请注意,我正在尝试将上述内容嵌入到shell脚本中

1 个答案:

答案 0 :(得分:1)

试试这个:

psql -A -t -q -h $hostname -U $username -d $dbname -c "select * from $gschema.$gtable order by $key limit 3" > /home/gp.csv

您也可以将SQL放在一个文件中:

example.sql

select * from :gschema.:gtable order by :key limit 3

然后使用sql文件:

psql -A -t -q -h $hostname -U $username -d $dbname -f example.sql -v gschema=public -v gtable=customer -v key=id > /home/gp.csv