我试图找到在PostgreSQL中存储系统路径的适当位置。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:
我收到的错误是:
ERROR:FROM employee_scheduler.get_csv_path( 'countries.csv')
:在或接近 “employee_scheduler” LINE 12语法错误我已经尝试过以下陈述但没有运气:
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;
我开始想我想要达到这个目标的方式是不可能。有没有人有任何想法如何实现这一目标?如果我想使用复制语句,我可能只需在任何地方硬编码路径...
感谢您的任何帮助。
雅,我试着添加employee_scheduler.get_csv_path之前,它仍然无法正常工作。它使用select语句产生正确的输出,但在COPY语句中不起作用。我用我收到的错误更新了我的问题,以及我尝试过的不同事情。 – 2010-05-23 00:12:01