【发布时间】:2014-05-07 16:02:22
【问题描述】:
我正在将一些客户端的东西迁移到服务器中,并希望将其放入一个函数中。
我需要将查询结果保存到 CSV 文件中。但是,我想将结果文件的文件名/位置作为函数的参数传递。
所以,这是我想做的一个简单示例:
CREATE FUNCTION send_email_results(filename1 varchar) RETURNS void AS $$
DECLARE
BEGIN
COPY(SELECT * FROM mytable) TO filename1 WITH CSV;
END;
$$ LANGUAGE plpgsql;
不过,Postgres 对此有所抱怨,因为它正在将 filename1 参数转换为“$1”,但它不知道该怎么做。
如果需要,我可以对路径进行硬编码,但能够将其作为参数传递肯定会很方便。
谁有线索?
【问题讨论】:
-
公平地说,我想在函数中执行此操作的原因是我需要导出到函数中的多个文件。所以想象一下需要传递 2 或 3 个不同的文件名作为参数,并在该函数中导出一些不同的查询。如果我不需要导出多个查询,那么我可以简单地输出输出。
-
在函数中使用 EXECUTE 'your query'。
-
COPY with dynamic file name 的可能重复项
标签: sql postgresql csv copy plpgsql