2

我有一个包含数百万条记录的巨大 csv 文件,我想使用 python 脚本将它加载到 Netezza DB 我尝试过简单的插入查询,但它非常慢。可以给我一些示例python脚本或一些想法我该怎么做?

谢谢

4

3 回答 3

3

如果您安装了 Netezza 管理工具,您可以对nzload.

像这样的东西:

os.system("nzload -host myhost -u myuser -pw mypassword -db MYDB -t MYTABLE -skipRows 1 -nullValue NULL -quotedValue DOUBLE -df \"C:\\myinputfile.txt\" -delim \"|\" -dateDelim \"-\" -lf c:\\logs\\nzload.log -bf c:\\logs\\nzloadbad.log")

另请参阅: 在 Python 中调用外部命令

于 2013-06-28T13:53:07.567 回答
1

您可以使用 nz_load4 加载数据,这是支持实用程序 /nz/support/contrib/bin

语法与 nzload 相同,默认情况下 nz_load4 将使用 4 个线程加载数据,您可以使用 -tread 选项达到 32 个线程以获取更多详细信息,请使用 nz_load4 -h

这将根据线程数创建日志文件,例如

于 2013-07-08T08:44:50.297 回答
0

你需要在你想要运行 nzload 的机器上安装 nzcli - 你的系统管理员应该能够把它放在你的 unix/linux 应用服务器上。有一个详细的过程来设置它,缓存密码等 - 系统管理员应该能够做到这一点。

设置完成后,您可以创建 NZ 控制文件以指向您的数据文件并执行加载。Netezza 数据加载指南详细说明了如何执行所有这些操作(可通过 IBM 获得)。

如果您有 CREATE EXTERNAL TABLE 权限,您也可以通过 aginity 来完成 - 您可以INSERT INTO FROM EXTERNAL ... REMOTESOURCE ODBC从 ODBC 连接加载文件。

于 2013-03-26T17:19:06.757 回答