我已经将oracle数据库表数据导出到csv文件中,并通过命令提示符使用'\copy‘命令将相同的数据导入postgres数据库。在导入时,由于时间戳问题,我得到了以下错误
psql命令:
\copy "CSV_IMPORT"."DUMMY_TABLE" FROM 'D:\Database_Auto\DUMMY_TABLE_DATA.csv' DELIMITER ',' CSV HEADER;
CSV_IMPORT is the schema name
DUMMY_TABLE is the table name错误:
ERROR: invalid input syntax for type timestamp with time zone: "21-JUN-07 06.42.43.950926000 PM"
CONTEXT: COPY DUMMY_TABLE, line 2, column updated_date: "21-JUN-07 06.42.43.950926000 PM"如果我用:而不是.作为21-JUN-07 06:42:43.950926000 PM修改时间戳数据,那么它就是在导入记录,没有任何错误。我无法在csv文件中的数百万条记录中手动完成。任何通过psql命令的解决方案。
表创建脚本:
创建表"CSV_IMPORT"."DUMMY_TABLE“( ID (100) NULL,DOCK_TYPE VARCHAR(1) NULL,START_DATE时间戳(6)带时区,UPDATE_SEQ_NBR双重精度NULL,END_DATE时间戳(6)带时区)
约束PK_DUMMY_TABLE主键( ID、DOCK_TYPE、START_DATE、UPDATE_SEQ_NBR );
CSV文件中的表数据:
"ID“、"DOCK_TYPE”、"START_DATE“、"UPDATE_SEQ_NBR”、"END_DATE“
"756748",“L”,21-6月-07 06.42.43.950926000下午1,21-6月-07 06.43.950926000
"658399",“T”,15-11月-03 02.5 9.54.0000000 AM,2,15-11-03 02.59.54.0000000 AM
"647388",“F”,19-11月-04 11.09.05.0000000下午,3,19-11月-04 11.09.05.0000000下午
发布于 2020-07-23 11:33:33
您最好的选择是重新执行Oracle的导出,并使用to_string()正确地格式化时间戳。
如果这不可行,那么将DUMMY_TABLE列改为text而不是timestamptz,并使用to_timestamp(<tstz_column>, 'DD-MON-YY HH.MI.SS.US000 PM')在PostgreSQL中解析它。
如果您没有被困在Windows上,您可以使用\copy ... from program并使用sed动态清理您的导出。
https://stackoverflow.com/questions/63049744
复制相似问题