如何通过 Python 脚本使用 NZ Loader (Netezza Loader)?

Posted

技术标签:

【中文标题】如何通过 Python 脚本使用 NZ Loader (Netezza Loader)?【英文标题】:How to use NZ Loader (Netezza Loader) through Python Script? 【发布时间】:2013-03-23 22:45:33 【问题描述】:

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

谢谢

【问题讨论】:

等等...您正在尝试针对 Netezza 执行单个插入语句??只需使用 nzload 命令行并从您的 python 脚本中输出它... 你知道我该怎么做吗?甚至我需要从命令行或 shell 运行 nzload,因为我只安装 aginity 工作台来连接到 netezza 数据库,我还需要其他什么来运行 nzload? 【参考方案1】:

如果您安装了 Netezza 管理工具,则可以对 nzload 进行 shell 调用。

类似这样的:

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")

另请参阅:Calling an external command in Python

【讨论】:

【参考方案2】:

你可以使用nz_load4来加载数据,这是支持工具/nz/support/contrib/bin

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

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

【讨论】:

【参考方案3】:

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

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

如果您有 CREATE EXTERNAL TABLE 权限,您也可以通过 aginity 执行此操作 - 您可以执行 INSERT INTO FROM EXTERNAL ... REMOTESOURCE ODBC 从 ODBC 连接加载文件。

【讨论】:

我已经使用 INSERT INTO FROM EXTERNAL ... REMOTESOURCE ODBC 加载它为 1000 条记录工作的数据,但是当我尝试使用来自 aginity 的相同命令加载 7,00,000 条记录时,它给了我错误 [08S01] 通信链路故障。知道可能是什么问题吗? Aginity 时不时会遇到这种情况。我认为这可能与 Netezza 中用户 ID 的最大查询时间设置有关,但我真的不知道。也许尝试使用一点 C# 或 powershell 命令行脚本来针对 ODBC 连接执行 SQL 语句,看看它是否仍然给出该错误? 我使用 pyodbc 库对 python 脚本进行了同样的尝试,但得到了同样的错误。我不知道如何尝试使用 powershell 命令行以及如何安装它。 好吧,如果它在pyodbc 中失败,则可能是NZ DB 和您的服务器之间的连接有问题。也许您可以尝试拆分文件并查看在失败之前可以加载多少?可能是时候给您的 DBA 或 IBM 打电话了。 我通常为此使用 nzload CLI。创建一个空表,然后使用 nzload 插入。由于您的问题已经得到解答,我建议您接受它,因为这就是网站的运作方式。

以上是关于如何通过 Python 脚本使用 NZ Loader (Netezza Loader)?的主要内容,如果未能解决你的问题,请参考以下文章

配置 nz-table 表单页脚总页数与条数显示 - Angular

如何使用PySimpleGUI通过有效的python脚本构建GUI

如何使用 Python 将标准输入/标准输出通过管道传输到 Perl 脚本

如何通过 Python 使用 GeckoDriver 和 Firefox 使 Selenium 脚本无法检测?

如何通过 python 脚本而不是 ipython 使用 SPy 显示高光谱图像?

如何让Access 空文本框参与计算时默认是0,如图碳粉为空,计算时自动变0,别用VB代码,VB我会,请用VBA