Мне нужно создать сценарий оболочки Linux для запуска SQL-запроса PostgreSQL и экспорта результатов в формате CSV.Проведя некоторое исследование, я узнал, что есть два способа сделать это, как показано ниже:
с помощью SQL-запроса
COPY table_name TO ‘file_name.csv' DELIMITER ',' CSV HEADER;
используя psql
\copy table_name to 'filename.csv’ csv header
Я пробовал оба с сервера SQL, из которого я обнаружил, что первый метод требует административного разрешения, а я не хочу.
Я попробовал второй метод и могу также записать вывод запроса PostgreSQL в файл CSV, но теперь мне нужно сделать это из сценария оболочки, где я сталкиваюсь с проблемой ниже.Я пишу внутри скрипта следующим образом:
psql -U username -d database -c $'
\copy(WITH var(collectionMonth) as (values(\'$collectionMonth\'))
SELECT CONCAT(var.collectionMonth, LPAD(mfv2.integer_value::text,2,\'0\')) as "collection_date" FROM var,
meta_field_value mfv2 WHERE mfv2.meta_field_name_id=8 TO \'/home/my.csv\' csv HEADER;'
Он показывает «синтаксическая ошибка рядом с \ copy».Как это исправить?Я знаю, что ошибка из-за \
перед командой copy
.