我使用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
);
答案 0 :(得分:0)
当Netezza可以弄清楚如何正确转换字符数据时,它会隐式地将字符列转换为其他数据类型。
例如:
TESTDB.ADMIN(ADMIN)=> insert into id1 values
TESTDB.ADMIN(ADMIN)-> (NULL, NULL , '1999-1-1', '2010-01-31', '2014-12-1', NULL, '1900-01-1', NULL);
INSERT 0 1
TESTDB.ADMIN(ADMIN)=> insert into id2 select * from id1;
INSERT 0 1
TESTDB.ADMIN(ADMIN)=> select * from id2;
ID | ID_NUM | CREATE_TIME | CRT_DTE | UPDATE_TIME | PLAN_YEAR | DLV_DTE | STATUS
----+--------+---------------------+---------------------+---------------------+-----------+---------------------+--------
| | 1999-01-01 00:00:00 | 2010-01-31 00:00:00 | 2014-12-01 00:00:00 | | 1900-01-01 00:00:00 |
(1 row)
但是,根据您的DDL和输出,我认为这是对INTEGER的转换失败。似乎表ID1中的数据中某处有一个包含文本值'NULL'的列。
TESTDB.ADMIN(ADMIN)=> insert into id1 values
(NULL, 'NULL', NULL, NULL, NULL, NULL, NULL, NULL);
INSERT 0 1
TESTDB.ADMIN(ADMIN)=> insert into id2 select * from id1;
ERROR: pg_atoi: error in "NULL": can't parse "NULL"
TESTDB.ADMIN(ADMIN)=>
我建议检查ID1中的列以查找字符串'NULL',并在适当时替换为实际的NULL。
解决此问题后,您可能会发现varchar列中的日期表示由于格式不正常而未隐式转换。如果是这种情况,那么您可能需要使用to_date函数进行显式转换。
答案 1 :(得分:0)
我已加载到id2中,我将play_year更改为字符变化;从ID2中选择id,DLV_DTE,STATUS 其中月份(DLV_DTE)= 10年份(DLV_DTE)= 2013年
错误:函数'MONTH(TIMESTAMP)'不存在 无法识别满足给定参数类型的函数: