首页 > 解决方案 > 将多行的查询结果存储到 csv 中,并从用户那里获取表名

问题描述

我正在尝试将 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 脚本中

标签: shpsqlgreenplum

解决方案


尝试这个:

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

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

例子.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

推荐阅读