Сохраните результаты запроса с несколькими строками в CSV и принимая имя таблицы от пользователя - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь сохранить результат запроса 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

Может кто-нибудь помочь мне с этим, пожалуйста.обратите внимание, что я пытаюсь встроить вышесказанное в сценарий оболочки

1 Ответ

0 голосов
/ 25 апреля 2018

Попробуйте это:

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