将多行查询结果存储到 csv 中,并从用户那里获取 table 名称
Store the query results with multiple rows into csv and taking table name from user
我正在尝试将 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
我也试过下面存储结果但我无法在下面的查询中将 table 名称作为参数传递。对于标准 table 名称,输出符合要求。
psql -h $hostname -U $username -d $dbname -c "COPY (select * from table_name order by key limit 3) TO STDOUT "> /home/gp.csv
谁能帮我解决这个问题。
请注意,我正在尝试将以上内容嵌入 shell 脚本
试试这个:
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
我正在尝试将 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
我也试过下面存储结果但我无法在下面的查询中将 table 名称作为参数传递。对于标准 table 名称,输出符合要求。
psql -h $hostname -U $username -d $dbname -c "COPY (select * from table_name order by key limit 3) TO STDOUT "> /home/gp.csv
谁能帮我解决这个问题。 请注意,我正在尝试将以上内容嵌入 shell 脚本
试试这个:
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