【问题标题】:postgres \copy command "ERROR: invalid input syntax for type timestamp with time zone" while importing csv data exported from Oracle database导入从 Oracle 数据库导出的 csv 数据时,postgres \copy 命令“错误:带时区的时间戳类型的输入语法无效”
【发布时间】:2020-11-12 21:55:02
【问题描述】:

我已将 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 VARCHAR(100) 非空 , DOCK_TYPE VARCHAR(1) 非空 , START_DATE TIMESTAMP(6) WITH TIME ZONE NOT NULL , UPDATE_SEQ_NBR 双精度非空 , END_DATE TIMESTAMP(6) 与时区
, 约束 PK_DUMMY_TABLE 主键 ( ID , DOCK_TYPE , 开始日期 , UPDATE_SEQ_NBR ) );

CSV 文件中的表格数据:

"ID","DOCK_TYPE","START_DATE","UPDATE_SEQ_NBR","END_DATE"

"756748","L",21-JUN-07 06.42.43.950926000 PM,1,21-JUN-07 06.42.43.950926000 PM

"658399","T",15-NOV-03 02.59.54.000000000 AM,2,15-NOV-03 02.59.54.000000000 AM

"647388","F",19-NOV-04 11.09.05.000000000 PM,3,19-NOV-04 11.09.05.000000000 PM

【问题讨论】:

  • 欢迎来到 SO。您能否还添加 CREATE TABLE 语句和导致导入失败的数据样本?
  • 嗨,Jim Jones,我添加了 Create statemen 和示例 csv 数据文件 FYR

标签: postgresql csv import copy command


【解决方案1】:

您最好的选择是重新从 Oracle 导出并使用 to_string() 正确格式化时间戳。

如果这不可行,请将您的 DUMMY_TABLE 列更改为 text 而不是 timestamptz 并使用 to_timestamp(<tstz_column>, 'DD-MON-YY HH.MI.SS.US000 PM') 在 PostgreSQL 内部对其进行解析。

如果您没有卡在 Windows 上,您可以使用 \copy ... from programsed 即时清理您的导出。

【讨论】:

  • 感谢您的回复。我无法从 oracle 更新任何数据,因为它是原始源数据。它是归档数据的类型,因此不允许更改列数据类型。您能否详细解释一下“\copy ... from program and use sed to clean up your export on the fly。”
猜你喜欢
  • 1970-01-01
  • 2020-11-05
  • 1970-01-01
  • 2012-12-24
  • 1970-01-01
  • 2015-12-07
  • 2021-01-08
  • 2019-02-11
相关资源
最近更新 更多