【发布时间】:2015-01-12 06:35:05
【问题描述】:
我已使用 NZload 从 db2 将文件加载到 Netezza。要首先使用 NZload,我们需要在 Netezza 中创建一个表来接收数据,因此我为此创建了表 Table1,所有列的数据类型为 character varying。我已成功将所有记录加载到此表中。
现在我想将几个列的数据类型更改为 date 以使我能够按月份和年份条件进行搜索。我创建了另一个表Table2,其列的数据类型为date,在尝试将数据从Table1 移动到Table2 时出现错误:
"ERROR [HY000] ERROR: pg_atoi: error in "[NULL]": can't parse "[NULL]" "
我必须怎样做才能成功执行这种数据类型转换?
两个表的 DDL:
CREATE TABLE ID1
(
ID CHARACTER VARYING(100) NULL,
ID_NUM CHARACTER VARYING(100) NULL,
CREATE_TIME CHARACTER VARYING(100) NULL,
CRT_DTE CHARACTER VARYING(100) NULL,
UPDATE_TIME CHARACTER VARYING(100) NULL,
PLAN_YEAR CHARACTER VARYING(100) NULL,
DLV_DTE CHARACTER VARYING(100) NULL,
STATUS CHARACTER VARYING(100) NULL
);
CREATE TABLE ID2
(
ID INTEGER NULL,
ID_NUM INTEGER NULL,
CREATE_TIME DATETIME NULL,
CRT_DTE DATETIME NULL,
UPDATE_TIME DATETIME NULL,
PLAN_YEAR INTEGER NULL,
DLV_DTE DATETIME NULL,
STATUS CHARACTER VARYING(100) NULL
);
【问题讨论】:
-
能否提供两张表的ddl?这种错误通常意味着您在源列中有数据不能隐式转换到目标列
-
并提供一个示例,说明日期如何在您的摄取 varchar 列中表示。
-
Scott,创建表 ID1(ID 字符变化(100)空,ID_NUM 字符变化(100)空,CREATE_TIME 字符变化(100)空,CRT_DTE 字符变化(100)空,UPDATE_TIME 字符变化( 100) 空,PLAN_YEAR 字符变化(100) 空,DLV_DTE 字符变化(100) 空,状态字符变化(100) 空)
-
Table2:创建表 ID2(ID 整数空,ID_NUM 整数空,CREATE_TIME 日期时间空,CRT_DTE 日期时间空,UPDATE_TIME 日期时间空,PLAN_YEAR 整数空,DLV_DTE 日期时间空,状态字符变化(100)空) ;
-
--Load data insert into ID2 select * from ID1-- Error ("ERROR [HY000] ERROR: pg_atoi: error in "[NULL]": can't parse "[NULL]" " )-- 我已经更改了表 ID1:alter table ID1 alter column update_time datetime;它会导致错误(错误 ^ 发现 "DATETIME" (at char 73) Expecting
DROP' orSET')