我正在尝试将文本文件导入netezza。作为一个简单的例子,我使用带有一列的文件。
文件
01/04/2011
01/01/2099
01/01/2011
我有表
create table test_data
(f date)
我尝试通过加载数据
insert into test_data
select * from
EXTERNAL 'C:\Temp\dt.txt'
USING
(
DATESTYLE 'DMY'
DATEDELIM '/'
MAXERRORS 100000000000
Y2BASE 2000
ENCODING 'internal'
REMOTESOURCE 'ODBC'
delimiter 't'
CRINSTRING TRUE
TRUNCSTRING TRUE
CTRLCHARS TRUE
IGNOREZERO TRUE
-- ESCAPECHAR ''
)
插入后表中没有数据。你对理性有什么想法吗?
我知道我在回答一个非常陈旧的问题,但谷歌把它放在了"netezza datestyle"的顶部,所以它应该有一个正确的答案。
您的数据文件和测试表DDL都很好。INSERT语句有很多您不需要的参数。最小语法为:
insert into test_data
select * from
EXTERNAL 'C:\Temp\dt.txt'
USING
(
DATESTYLE 'DMY'
DATEDELIM '/'
REMOTESOURCE ODBC -- note that you had this as a quoted string. Either should work
LOGDIR 'C:\Temp' -- as someone pointed out, this will give you log files to troubleshoot
);
我刚刚用您的示例文件测试了此语法,数据加载和排序正确(例如,它知道2011年4月1日是四月1日而不是1月4日)有效的日期样式值为"YMD"、"MDY"、"DMY"one_answers"MONDY"。默认为"YMD"
您的高maxerrors(没有LOGDIR)意味着记录在出现错误时会被静默地丢弃。除非您需要考虑坏数据记录,否则请将MAXERRORS设置为尽可能低(例如1,以考虑可选的标题行)
从远程源代码来看,插入的语法看起来很好。从insert语句生成的nzlog应该是可见的。你能把收到的错误粘贴到日志中吗?
无需在查询中使用使用部分
正确的例子是:
插入到表名称中,从外部C:\temp\dt.txt 中选择*
这应该在没有任何问题的情况下加载表中的数据