我正在尝试将文本文件导入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 '\'
)
插入后表中没有数据。你有什么关于理性的想法吗?
答案 0 :(得分:4)
我知道我回答了一个非常陈旧的问题,但谷歌把它放在" 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年1月4日是4月1日而不是1月4日)有效的datestyle值是'YMD','MDY',' DMY','MONDY'。默认值为“YMD'
”您的高maxerrors(没有LOGDIR)意味着记录会在出错时以静默方式丢弃。 除非您需要考虑错误的数据记录,否则请将MAXERRORS设置为尽可能低(例如1,以考虑可选的标题行)
答案 1 :(得分:0)
插件的语法从remotesource看起来很好。从insert语句生成的nzlog应该是可见的。你能粘贴你从日志中收到的错误吗?
答案 2 :(得分:-2)
无需在查询中使用using部分
正确的例子是:
插入table_name select * from external C:\ temp \ dt.txt
这应该加载表中的数据而没有任何问题