首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将从Oracle数据库导出的csv数据导入时,postgres \copy命令"ERROR:具有时区类型的时间戳的输入语法无效“

将从Oracle数据库导出的csv数据导入时,postgres \copy命令"ERROR:具有时区类型的时间戳的输入语法无效“
EN

Stack Overflow用户
提问于 2020-07-23 08:12:42
回答 1查看 3K关注 0票数 0

我已经将oracle数据库表数据导出到csv文件中,并通过命令提示符使用'\copy‘命令将相同的数据导入postgres数据库。在导入时,由于时间戳问题,我得到了以下错误

psql命令:

代码语言:javascript
复制
\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

错误:

代码语言:javascript
复制
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下午

EN

回答 1

Stack Overflow用户

发布于 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动态清理您的导出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63049744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档