【发布时间】:2010-11-22 11:12:41
【问题描述】:
我正在编写一个 python 脚本,它将对文本文件进行一些处理。作为该过程的一部分,我需要将制表符分隔文件的每一行导入到本地 MS SQL Server (2008) 表中。我正在使用 pyodbc,我知道该怎么做。但是,我有一个关于执行它的最佳方法的问题。
我将遍历文件,为文件的每一行创建一个 cursor.execute(myInsertSQL)。有没有人看到任何问题等待提交语句,直到所有记录都被循环(即在循环之后执行 commit() 而不是在每个单独执行之后的循环内)?我问的原因是某些文件将有超过 5000 行。我不知道尝试“保存它们”并一次性提交所有 5000 个是否会导致问题。
我对 python 还很陌生,所以我还不知道所有这些问题。
谢谢。
【问题讨论】:
-
“我不知道尝试“保存它们”并同时提交所有 5000 是否会导致问题。”你想象过什么样的“问题”?你试过了吗?它做了什么?将提交从循环中移到循环末尾是一个微不足道的更改,您可以轻松地同时完成这两项操作并包含您学到的内容。
-
我已经尝试过使用较小的套装并且没有遇到问题。我担心的不是我在测试时它不起作用,而是如果有一些上限我应该注意。这些文件的大小会有所不同,可能会超过 5000。我正在编写的脚本将作为进入生产的计划批处理的一部分运行,我只是想确保我不会通过做一些不是推荐。
-
sqlserver的python接口是否提供
.executemany方法? -
确实如此。谢谢。我忽略了这一点。 pyodbc 实现了它,我认为这可以很好地满足我的需求。 (code.google.com/p/pyodbc/wiki/Cursor)
标签: python database odbc commit bulkinsert