将数据作为一个列表加载到Netezza是非常困难的

2024-03-29 04:39:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个列表中有大约一百万条记录,我想把它们写到Netezza表中。我一直在pyodbc中使用executemany()命令,这似乎非常慢(如果我将记录保存到Excel并从Excel文件加载到Netezza,则加载速度会更快)。有没有比用executemany()命令加载列表更快的方法?在

PS1:这个列表是由我们公司的一个专有的DAG生成的,所以写入这个列表非常快。在

PS2:我还尝试过将executemany()循环成块,每个块包含一个包含100条记录的列表。加载大约需要60秒,这看起来非常慢。在


Tags: 文件方法命令列表记录公司excel速度
2条回答

Netezza适合于大容量加载,executeMany()一次性插入行数。加载数百万行的最佳方法是“nzload”实用程序,它可以由vbscript、Windows的Excel宏或Linux的Shell脚本调度。在

在Python中,我使用临时外部表将数百万行加载到Netezza具有很好的性能。基本上Python在本地机器上创建一个CSV文件,然后告诉ODBC驱动程序将CSV文件加载到远程服务器。在

最简单的例子是:

SELECT * 
FROM EXTERNAL '/tmp/test.txt'
SAMEAS test_table 
USING (DELIM ',');

在幕后,这相当于nzload命令,但它不需要nzload。这对我在没有nzload的窗口上工作得很好。在

警告:请注意CSV的格式、CSV中的值和命令的选项。Netezza提供无效值的模糊错误消息。在

相关问题 更多 >