Я пытаюсь найти подходящее место для хранения системного пути в PostgreSQL.
Я пытаюсь загрузить значения в таблицу с помощью команды COPY. Однако, поскольку я буду регулярно ссылаться на один и тот же путь к файлу, я хочу сохранить этот путь в одном месте. Я пытался создать функцию для возврата соответствующего пути, но я получаю синтаксическую ошибку при вызове функции в команде COPY. Я не уверен, что это правильный путь, но я все равно выложу свой код.
Команда COPY:
COPY employee_scheduler.countries (code, name)
FROM get_csv_path('countries.csv')
WITH CSV;
Определение функции:
CREATE OR REPLACE FUNCTION
employee_scheduler.get_csv_path(IN file_name VARCHAR(50))
RETURNS VARCHAR(250) AS $$
DECLARE
path VARCHAR(200) := E'C:\\Brian\\Work\\employee_scheduler\\database\\csv\\';
file_path VARCHAR(250) := '';
BEGIN
file_path := path || file_name;
RETURN file_path;
END;
$$ LANGUAGE plpgsql;
Если у кого-то есть иное представление о том, как этого добиться, я открыт для предложений.
UPDATE:
Я получаю ошибку:
ОШИБКА: синтаксическая ошибка в или около "employee_scheduler"
ЛИНИЯ 12: ОТ employee_scheduler.get_csv_path ('country.csv')
Я безуспешно пробовал следующие утверждения:
COPY employee_scheduler.countries (code, name)
FROM employee_scheduler.get_csv_path('countries.csv')
WITH CSV;
COPY employee_scheduler.countries (code, name)
FROM (employee_scheduler.get_csv_path('countries.csv'))
WITH CSV;
COPY employee_scheduler.countries (code, name)
FROM (SELECT * FROM employee_scheduler.get_csv_path('countries.csv'))
WITH CSV;
Я начинаю думать, что то, как я пытаюсь достичь этого, невозможно. У кого-нибудь еще есть идеи, как этого добиться? Я мог бы просто жестко закодировать путь везде, если я хочу использовать оператор копирования ...
Спасибо за любую помощь.