gpt4 book ai didi

csv - 无法将 CSV 复制到 postgreSQL 表中 : timestamp column won't accept the empty string

转载 作者:行者123 更新时间:2023-12-04 11:09:31 25 4
gpt4 key购买 nike

我想将 CSV 文件导入 9.2 版,但 CSV 文件在最后一列位置有双引号双引号来表示 NULL 值:
"2","1001","9","2","0","0","130","","2012-10-22 09:33:07.073000000",""
它映射到时间戳类型的列。 postgreSQL 不喜欢“”。我试图设置 NULL 选项,但也许我做得不对?我试过NULL as '""NULL ''NULL as ''NULL ""但没有成功;这是我的命令:

COPY SCH.DEPTS 
FROM 'H:/backups/DEPTS.csv'
WITH (
FORMAT CSV,
DELIMITER ',' ,
NULL '',
HEADER TRUE,
QUOTE '"'
)

但它失败并出现错误:

ERROR: invalid input syntax for type timestamp: ""

CONTEXT: COPY depts, line 2, column expirydate: ""



附言有没有办法为 COPY 命令指定 bool 值的字符串表示形式?生成 CSV(其中有很多)的实用程序使用“false”和“true”。

最佳答案

空字符串 ("") 不是有效的时间戳,COPY似乎没有提供 FORCE NULLFORCE EMPTY TO NULL模式;它有相反的,FORCE NOT NULL ,但这不会做你想要的。

您可能需要 COPY将数据放入带有 text 的表中时间戳字段,可能是 UNLOGGEDTEMPORARY表,然后使用 INSERT INTO real_table SELECT col1, col, col3, NULLIF(tscol,'') FROM temp_table; .
COPY应该接受truefalse作为 bool 值,所以你不应该有任何问题。

或者,使用简单的 Python 脚本和 csv 读取 CSV模块,然后使用 psycopg2COPY行到 Pg 中。或者只是写出新的清理后的 CSV 并将其输入 COPY .或者使用进行数据转换的 ETL 工具,例如 Pentaho Kettle 或 Talend。

关于csv - 无法将 CSV 复制到 postgreSQL 表中 : timestamp column won't accept the empty string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14515046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com