在Netezza中加载UCS-2LE文件

问题描述 投票:0回答:1

我有多个30GB / 10亿记录文件,需要将它们加载到Netezza中。我正在使用pyodbc连接并运行以下命令。

create temp table tbl1(id bigint, dt varchar(12), ctype varchar(20), name varchar(100))  distribute on (id)

insert into tbl1
select * from external 'C:\projects\tmp.CSV'
using (RemoteSource 'ODBC' Delimiter '|' SkipRows 1 MaxErrors 10 QuotedValue DOUBLE)

这是nzlog文件中的代码段

Found bad records

bad #: input row #(byte offset to last char examined) [field #, declaration] diagnostic, 
   "text consumed"[last char examined]
----------------------------------------------------------------------------------------
1: 2(0) [1, INT8] contents of field, ""[0x00<NUL>]
2: 3(0) [1, INT8] contents of field, ""[0x00<NUL>]

并且nzbad文件的每个字符之间都有“ NUL”。

我创建了一个前200万行的新文件。然后我在上面运行了iconv

iconv

使用相同的命令,新文件完美加载,没有错误。没有iconv -f UCS-2LE -t UTF-8 tmp.CSV > tmp_utf.CSV 转换,是否可以加载文件?运行iconv需要很长时间。

odbc netezza iconv
1个回答
0
投票

[Netezza不支持UCS-2LE,为您着想,我希望UTF-8足以容纳您拥有的数据(没有古代语言或类似语言?]

您需要集中精力通过以下方式更快地完成转换:

  1. 在互联网上搜索比iconv更有效的cpu实施>
  2. 一次并行转换多个文件(与您的CPU核心数减去一个相同(最大)相同)。在执行此操作之前,您可能需要先拆分原始文件。但是netezza loader倾向于使用相对较大的文件,因此您可能需要在加载时将它们放回一起以提高速度:)
© www.soinside.com 2019 - 2024. All rights reserved.