O comando COPY correcto para carregar dados postgreSQL do ficheiro csv que tem dados de uma única citação?

tenho um ficheiro csv com conteúdo como este:

10,53073,0,0,'Y','2008-05-30 21:46:55',0,'2008-05-30 21:48:04',0,53071,2

quero carregar os dados csv no my_table.

CREATE TABLE my_table
(
  ad_tree_id numeric(10,0) NOT NULL,
  node_id numeric(10,0) NOT NULL,
  ad_client_id numeric(10,0) NOT NULL,
  ad_org_id numeric(10,0) NOT NULL,
  isactive character(1) NOT NULL DEFAULT 'Y'::bpchar,
  created timestamp without time zone NOT NULL DEFAULT now(),
  createdby numeric(10,0) NOT NULL,
  updated timestamp without time zone NOT NULL DEFAULT now(),
  updatedby numeric(10,0) NOT NULL,
  parent_id numeric(10,0),
  seqno numeric(10,0),
  CONSTRAINT ad_treenodemm_pkey PRIMARY KEY (ad_tree_id , node_id ),
  CONSTRAINT adtree_adtreenodemm FOREIGN KEY (ad_tree_id)
      REFERENCES ad_tree (ad_tree_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
  CONSTRAINT ad_treenodemm_isactive_check CHECK (isactive = ANY (ARRAY['Y'::bpchar, 'N'::bpchar]))
)

Quando eu executar este comando na ferramenta pgAdmin III:

COPY my_table FROM 'c:\downloads\file.csv' DELIMITERS ',' CSV;
Tenho um erro.
ERROR:  value too long for type character(1)
CONTEXT:  COPY my_table, line 1, column isactive: "'Y'"
Então modifiquei o comando assim:
COPY my_table FROM 'c:\downloads\file.csv' DELIMITERS ',' CSV QUOTE ''';
COPY my_table FROM 'c:\downloads\file.csv' DELIMITERS ',' CSV QUOTE '\'';
COPY my_table FROM 'c:\downloads\file.csv' DELIMITERS ',' CSV QUOTE '\'' ESCAPE '\';
COPY my_table FROM 'c:\downloads\file.csv' DELIMITERS ',' CSV QUOTE '\'' ESCAPE \;
Todos falharam quando tentaram.

Então, alguém pode mostrar-me o comando de cópia correcto para este caso?

Author: null, 2012-10-12

3 answers

Aspas duplas (se {[2] } estiver ligado, ver os documentos)

COPY my_table FROM 'c:\downloads\file.csv' DELIMITERS ',' CSV QUOTE '''';

Ou usar o texto de escape não-normalizado do PostgreSQL :

COPY my_table FROM 'c:\downloads\file.csv' DELIMITERS ',' CSV QUOTE E'\'';
 23
Author: Craig Ringer, 2012-10-12 12:13:41

Algumas outras pessoas que estão experimentando este erro podem querer verificar o arquivo para ver se ele contém um cabeçalho na primeira linha. Embora não fosse o problema no seu caso, vale a pena notar a maneira de contornar isso:

COPY my_table FROM 'c:\downloads\file.csv' WITH DELIMITER ',' CSV HEADER;
 4
Author: Rupasa Sushma, 2018-03-01 15:28:34
Esquece, eu tenho a resposta.
COPY my_table FROM 'c:\downloads\file.csv' DELIMITERS ',' CSV QUOTE '''';
 1
Author: null, 2012-10-12 10:20:16