gpt4 book ai didi

sql - Postgres PL/pgSQL 函数结果到文件,文件名作为参数

转载 作者:行者123 更新时间:2023-11-29 14:21:37 25 4
gpt4 key购买 nike

我正在将一些客户端内容迁移到服务器中,并希望将其放入一个函数中。

我需要将查询结果保存到 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”,但它不知道该怎么做。

如果需要,我可以对路径进行硬编码,但能够将其作为参数传递肯定会很方便。

有人知道吗?

最佳答案

我刚遇到这个。事实证明,在使用复制命令时不能使用参数化参数(至少在使用 python 作为存储过程语言时是这样)。因此,您必须构建不带参数的命令,例如:

CREATE FUNCTION send_email_results(filename1 varchar) RETURNS void AS $$
DECLARE
BEGIN
execute 'copy (select * frommytable) to ' || filename1 || ' with csv;';
END;
$$ LANGUAGE plpgsql;

您可能需要使用引号功能来使其更具可读性。我不知道,我不使用 plpgsql 作为 postgres 函数语言,所以语法可能有误。

execute 'copy (select * frommytable) to ' || quote_literal(filename1) || ' with csv;'

关于sql - Postgres PL/pgSQL 函数结果到文件,文件名作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23522768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com