我有一个包含数百万条记录的巨大 csv 文件,我想使用 python 脚本将它加载到 Netezza DB 我尝试过简单的插入查询,但它非常慢。可以给我一些示例python脚本或一些想法我该怎么做?
谢谢
如果您安装了 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 中调用外部命令
您可以使用 nz_load4 加载数据,这是支持实用程序 /nz/support/contrib/bin
语法与 nzload 相同,默认情况下 nz_load4 将使用 4 个线程加载数据,您可以使用 -tread 选项达到 32 个线程以获取更多详细信息,请使用 nz_load4 -h
这将根据线程数创建日志文件,例如
你需要在你想要运行 nzload 的机器上安装 nzcli - 你的系统管理员应该能够把它放在你的 unix/linux 应用服务器上。有一个详细的过程来设置它,缓存密码等 - 系统管理员应该能够做到这一点。
设置完成后,您可以创建 NZ 控制文件以指向您的数据文件并执行加载。Netezza 数据加载指南详细说明了如何执行所有这些操作(可通过 IBM 获得)。
如果您有 CREATE EXTERNAL TABLE 权限,您也可以通过 aginity 来完成 - 您可以INSERT INTO FROM EXTERNAL ... REMOTESOURCE ODBC
从 ODBC 连接加载文件。