Postgresql 在PGAdmin工具的过程中写入复制命令的正确语法

Postgresql 在PGAdmin工具的过程中写入复制命令的正确语法,postgresql,plpgsql,postgresql-9.5,Postgresql,Plpgsql,Postgresql 9.5,我有一个要求,我需要通过程序使用copy命令将记录从表a复制到CSV文件。 直接使用此命令返回成功: COPY (SELECT * FROM <Table_Name>) TO '<CSV file location>' DELIMITER ',' CSV HEADER; 这也会返回一个错误如果您创建了一个过程,则需要将其与调用一起使用调用复制_表。如果它是一个函数,那么您可以这样做:选择copy\u table您将PL/pgSQL的BEGIN和SQL的BEG

我有一个要求,我需要通过程序使用copy命令将记录从表a复制到CSV文件。 直接使用此命令返回成功:

COPY (SELECT * FROM <Table_Name>)
   TO '<CSV file location>'
   DELIMITER ',' CSV HEADER;

这也会返回一个错误

如果您创建了一个
过程
,则需要将其与
调用一起使用
<代码>调用复制_表。如果它是一个
函数
,那么您可以这样做:
选择copy\u table

您将PL/pgSQL的
BEGIN
和SQL的
BEGIN
混在一起,前者启动一个块,后者是
START TRANSACTION
的缩写,并启动一个事务

您忘记了
BEGIN
后面的分号。但只包含一条语句的事务不需要显式;简单地忽略它

在PL/pgSQL代码中,您忘记了在

DELIMITER ','

当我使用CALL copy_表时;然后还得到了一个语法错误,它表明-error:syntax error在输入行1的末尾:CALL copy_table^************error******error:syntax error在输入SQL状态的末尾:42601 Character:16I尝试了上面提到的双引号,但仍然没有成功。此命令用于将副本(选择*从)复制到“”分隔符“,”CSV标头;但当我把它放在BEGIN和END下面时,它会在SELECT或其附近抛出语法错误。开始复制(选择*从)到“”分隔符“,”CSV标头;结束;你读过我关于
开始
的回答了吗?我本可以更清楚地说明引号:你必须使用两个单引号,而不是双引号。
create or replace procedure copy_table as
declare 
sql varchar;
begin
        sql = 'COPY (SELECT * FROM personsaddrs limit 10) TO ''/tmp/Shivangi_File2.csv'' DELIMITER ',' CSV HEADER';
        perform sql;
end;

BEGIN
copy_table;
END;
DELIMITER ','