将包含日期的文件加载到netezza中

时间:2013-08-01 07:05:38

标签: netezza

我正在尝试将文本文件导入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 '\'
)

插入后表中没有数据。你有什么关于理性的想法吗?

3 个答案:

答案 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

这应该加载表中的数据而没有任何问题