Postgresql STDIN中的PL/pgSQL复制变量

Postgresql STDIN中的PL/pgSQL复制变量,postgresql,plpgsql,postgresql-9.6,Postgresql,Plpgsql,Postgresql 9.6,我有以下脚本: DO $$ DECLARE i INTEGER; BEGIN i := 5; COPY public.mytable (id, name) FROM stdin; i abc \. END $$; 我使用psql运行上面的脚本。我想从变量I中获取值,并在COPY命令中使用它。如何在PL/pgSQL中实现这一点?可以使用\echo吗?可以将变量与动态SQL一起使用: EXECUTE format('COPY %I FROM ''/

我有以下脚本:

DO $$
DECLARE
    i INTEGER;
BEGIN

    i := 5;

    COPY public.mytable (id, name) FROM stdin;
    i   abc
    \.

END $$;

我使用psql运行上面的脚本。我想从变量
I
中获取值,并在
COPY
命令中使用它。如何在PL/pgSQL中实现这一点?可以使用\echo吗?

可以将变量与动态SQL一起使用:

EXECUTE format('COPY %I FROM ''/path/file''', i);

但您不能使用
复制。。。从PL/pgSQL中的STDIN
,因为函数中没有标准输入。

可以使用\echo吗?不,因为这是一个psql命令,所以不能在SQL或PL/pgSQL中使用它。我正在使用psql运行该脚本。示例:psql--dbname=postgresql://postgres:password@127.0.0.1:port/dbname从STDIN复制
,则必须编写客户端代码。