将带日期的文件加载到 netezza
Posted
技术标签:
【中文标题】将带日期的文件加载到 netezza【英文标题】:loading files with dates into netezza 【发布时间】:2013-08-01 07:05:38 【问题描述】:我正在尝试将文本文件导入 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 '\'
)
插入后表中没有数据。你对理性有什么想法吗?
【问题讨论】:
【参考方案1】:我知道我在回答一个非常陈旧的问题,但 google 把它放在“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,以考虑可选的标题行)
【讨论】:
这个答案对我帮助很大,我想补充一点,因为这似乎是与这个主题相关的唯一问题之一。如果在指定日期样式后仍然出现错误,可能也是因为您的时间格式。默认为 24 小时格式,如果您的时间戳采用 12 小时格式,它将不起作用(除非您检查日志,否则会给出一个相当无用的错误)。要指定时间格式,请使用“TimeStyle '12Hour'”,当然要删除双引号。有关更多信息,请搜索“Netezza_data_loading_guide”,这非常有帮助。 很高兴它有帮助,德马里尼。感谢您添加有关时间格式的信息。【参考方案2】:从远程源来看,插入的语法看起来不错。从插入语句生成的 nzlog 应该是可见的。你能粘贴你从日志中收到的错误吗?
【讨论】:
【参考方案3】:不需要在查询中使用 using 部分
正确的例子是:
insert into table_name select * from external C:\temp\dt.txt
这应该可以毫无问题地加载表中的数据
【讨论】:
以上是关于将带日期的文件加载到 netezza的主要内容,如果未能解决你的问题,请参考以下文章
使用 pyodbc 将带日期的数据上传到 MS Access 数据库
将 csv 文件加载到 BIGquery 中并在插入数据时添加日期列
如何将 AVRO 文件中的整数值加载到 bigquery 中的日期列?