Динамический SQL не работает на escape-символе - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь написать процедуру, которая загружает CSV в таблицу.Я создаю динамический sql и выполняю его.

v_sql = '\copy test_table from' || ' '''  || p_temp_dir || ''' '  || ' with csv header;';

 --insert into test
 --select v_sql;

EXECUTE v_sql;

Когда я проверяю сгенерированную строку, все в порядке, и я могу запустить ее правильно, но если я запускаю ее из процедуры, я получаю ошибку:

syntax error at or near "\"

Если я удаляю символ \, он работает (выдает ошибку, что такого файла нет; это задание предназначено для работы на локальной машине).Как я могу выполнить этот SQL?

1 Ответ

0 голосов
/ 24 октября 2018

\copy - это команда psql, а не оператор SQL.

Вы можете выполнять операторы SQL только с оператором PL / pgSQL EXECUTE.

Невозможно импортировать файлс клиентского компьютера в функции PostgreSQL, которая выполняется на сервере.Вам нужно будет написать код клиента, который COPY ... FROM STDIN.

...