将带有日期的文件加载到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 ''
)

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

我知道我在回答一个非常陈旧的问题,但谷歌把它放在了"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 中选择*

这应该在没有任何问题的情况下加载表中的数据

最新更新