Postgresql查询中的COPY命令

Postgresql查询中的COPY命令,postgresql,copy,Postgresql,Copy,你好 我想查询一下Postgresql中的COPY命令。 我有这张桌子: CREATE TABLE pm_monitor_temporary ( date timestamp NOT NULL, targetid varchar(128) NOT NULL, value1 float8 NOT NULL, value2 float8 NOT NULL, value3 float8 NOT NULL, value4 float8 NOT NULL, value5 flo

你好

我想查询一下Postgresql中的COPY命令。 我有这张桌子:

CREATE TABLE pm_monitor_temporary
(
  date timestamp NOT NULL,
  targetid varchar(128) NOT NULL,
  value1 float8 NOT NULL,
  value2 float8 NOT NULL,
  value3 float8 NOT NULL,
  value4 float8 NOT NULL,
  value5 float8 NOT NULL,
  value6 float8 NOT NULL,
  datastatus1 varchar(2) NOT NULL,
  datastatus2 varchar(2) NOT NULL,
  datastatus3 varchar(2) NOT NULL,
  datastatus4 varchar(2) NOT NULL,
  datastatus5 varchar(2) NOT NULL,
  datastatus6 varchar(2) NOT NULL,
  granularity int4 NOT NULL,
  neid varchar(16) NOT NULL,
  CONSTRAINT pm_monitor_pkey PRIMARY KEY (date, targetid, granularity, neid)
);
我确实创建了一个函数,该函数将csv内容复制到给定文件路径(文件的绝对路径)的表中。我的sql函数似乎有问题:

Create Or Replace Function copycsv_pm_monitor_temp(filePath  varchar(1025))
Returns void As
$BODY$
DECLARE
  sql varchar(1025);
BEGIN
    sql := 'COPY  pm_monitor_temporary FROM {' || filePath ||
      '| stdin} using DELIMITERS ',' ' || ';' ;
    EXECUTE sql;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
这将被编译,但是当我运行java代码时,这将最终导致错误。我错过什么了吗

Caused by: org.postgresql.util.PSQLException: ERROR: query "SELECT  'COPY                  pm_monitor_temporary FROM {' ||  $1  || '| stdin} using DELIMITERS ',' ' || ';'" returned     2 columns

您没有正确处理引号,并且意外地得到了一个有效语法的语句,该语句的结果列数不正确。你还有其他问题

这:

应该是这样的:

    sql := 'COPY pm_monitor_temporary FROM ''' || filePath ||
      ''' WITH (FORMAT csv, DELIMITER '','')';

您没有正确处理引号,并且意外地得到了一个有效语法的语句,该语句的结果列数不正确。你还有其他问题

这:

应该是这样的:

    sql := 'COPY pm_monitor_temporary FROM ''' || filePath ||
      ''' WITH (FORMAT csv, DELIMITER '','')';

你认为你的问题得到了回答吗?接受答案或提供不可接受的意见是一种良好的做法。你认为你的问题得到了回答吗?接受答案或提供不可接受的意见是一种很好的做法。