2

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

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

4

3 回答 3

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 日)有效的日期样式值是'YMD'、'MDY'、'DMY'、 '蒙迪'。默认值为“YMD”

您的高 maxerrors(没有 LOGDIR)意味着记录会在出错时被静默丢弃。除非您需要考虑错误的数据记录,否则将 MAXERRORS 设置为尽可能低(例如 1,以考虑可选的标题行)

于 2014-10-27T16:55:00.080 回答
0

从远程源来看,插入的语法看起来不错。从插入语句生成的 nzlog 应该是可见的。您可以粘贴从日志中收到的错误吗?

于 2014-01-10T21:45:44.177 回答
-3

无需在查询中使用 using 部分

正确的例子是:

插入 table_name select * from external C:\temp\dt.txt

这应该毫无问题地加载表中的数据

于 2013-08-16T04:52:35.897 回答