Postgresql 11 - Создать процедуру для выполнения функции COPY - PullRequest
0 голосов
/ 11 декабря 2018

В настоящее время я пытаюсь создать процедуру для автоматического копирования данных в мою базу данных при вызове процедуры.Однако каждый раз, когда я вызываю его, я получаю следующую ошибку:

ERROR:  column "name" does not exist
LINE 1: SELECT format('COPY test(%L) FROM %s CSV HEADER', name, '/Us...

Как столбец не существует?Вот все, что я написал:

CREATE PROCEDURE 
test_insert() AS
$$ 

BEGIN 

EXECUTE format('COPY test(%L) FROM %s CSV HEADER', name, '/Users/Receiving.csv');


END; 

$$ LANGUAGE plpgsql;

1 Ответ

0 голосов
/ 11 декабря 2018

Если вы используете name без одинарных кавычек, оно интерпретируется как имя столбца в (tacit) SELECT выражении

SELECT format('...', name, '...')

, которое PL / pgSQL запускает при выполнении вашей функции.

Поскольку в этом операторе SELECT нет предложения FROM, вы получаете наблюдаемую ошибку.

Решение состоит в том, чтобы использовать строковый литерал вместо этого, например, писать 'name' вместо 'имя».

...