错误:CSV引号字符不得出现在NULL规范中

时间:2017-10-01 15:37:56

标签: postgresql csv

我正在尝试将数据导入PostgreSQL,并在Windows 7中使用NULL值。

"Code1.2";"08";"ALCALA";"ACTIVO SERVICIO";"EN SERVICIO";"";"2017/04/08";1 
"Code1.3";"46";"BARCELONA";"ACTIVO SERVICIO";"EN SERVICIO";"";"2009/07/01";0

我不想导入引号"data"""值。

CREATE TABLE IF NOT EXISTS public.TABLA1 ( 
    CODIGO text, 
    COD text, 
    MUNICIPIO text, 
    ESTADO text, 
    SITUACION text, 
    FECHA_INICIO date, 
    FECHA_FIN date, 
    CONTADOR numeric
);

如果我使用以下内容导入数据,我可以处理NULL值,但数据中包含""

COPY public.TABLA1 (
    CODIGO, 
    COD, 
    MUNICIPIO, 
    ESTADO, 
    SITUACION, 
    FECHA_INICIO, 
    FECHA_FIN, 
    CONTADOR
) 
FROM 'C:\DATA\ORIGEN\fichero_prueba.csv' 
WITH (DELIMITER ';', NULL '""');

| CODIGO    | COD  | MUNICIPIO | ESTADO          |SITUACION    |FECHA_INICIO|...
| --------- | ---- | --------- | ----------------|-------------|------------|...
| "Code1.2" | "08" |"ALCALA"   |"ACTIVO SERVICIO"|"EN SERVICIO"|[null]      |...
| "Code1.3" | "46" |"BARCELONA"|"ACTIVO SERVICIO"|"EN SERVICIO"|[null]      |...
 ...

另一方面,如果我使用以下内容导入数据,请尝试保留引号:

COPY public.TABLA1 ( 
    CODIGO,
    COD,
    MUNICIPIO,
    ESTADO,
    SITUACION,
    FECHA_INICIO,
    FECHA_FIN,
    CONTADOR
)
FROM 'C:\DATA\ORIGEN\fichero_prueba.csv'
WITH DELIMITER ';' CSV QUOTE '"' NULL '""';
  

错误: CSV引号字符不得出现在NULL规范

不使用NULL

COPY public.TABLA1 (
    CODIGO,
    COD,
    MUNICIPIO,
    ESTADO,
    SITUACION,
    FECHA_INICIO,
    FECHA_FIN,
    CONTADOR
)
FROM 'C:\DATA\ORIGEN\fichero_prueba.csv'
WITH DELIMITER ';' CSV QUOTE '"';
  

错误:类型为date的输入语法无效:«»

如何在日期类型中导出没有""和处理NULL值的数据?

1 个答案:

答案 0 :(得分:1)

根据您在评论中的一个答案,我认为您可以访问该文件(因为您可以将扩展程序从.dat更改为.csv),因此我建议您在Excel(或任何等效文件)并删除FECHA_INICIO列中的引号,以代替:

"Code1.2";"08";"ALCALA";"ACTIVO SERVICIO";"EN SERVICIO";"";"2017/04/08";1 
"Code1.3";"46";"BARCELONA";"ACTIVO SERVICIO";"EN SERVICIO";"";"2009/07/01";0

你有:

"Code1.2";"08";"ALCALA";"ACTIVO SERVICIO";"EN SERVICIO";;"2017/04/08";1 
"Code1.3";"46";"BARCELONA";"ACTIVO SERVICIO";"EN SERVICIO";;"2009/07/01";0

如果您可以执行此操作,则以下内容会将数据插入表格而不使用双引号,并在NULL列中插入FECHA_INICIO

COPY public.TABLA1 (
    CODIGO, 
    COD, 
    MUNICIPIO, 
    ESTADO, 
    SITUACION, 
    FECHA_INICIO, 
    FECHA_FIN, 
    CONTADOR
) 
FROM 'C:\DATA\ORIGEN\fichero_prueba.csv' 
WITH CSV DELIMITER ';' QUOTE '"';