SQL - 更新单个列的所有记录

时间:2015-07-29 16:42:35

标签: python sql

我正在尝试编写一个python脚本,该脚本解析文件并使用从解析文件中获取的新值更新数据库。我的代码如下所示:

startTime = datetime.now()

db = <Get DB Handle>

counter = 0

with open('CSV_FILE.csv') as csv_file:
    data = csv_file.read().splitlines()
    for line in data:
        data1 = line.split(',')
        execute_string = "update table1 set col1=" + data1[1] + 
                         " where col0 is '" + data1[0] + "'"
        db.execute(execute_string)
        counter = counter+1
        if(counter % 1000 == 0 and counter != 0):
            print ".",

print ""

print datetime.now() - startTime

但该操作大约需要10分钟才能完成。我可以通过任何方式调整我的SQL查询以加快它的速度吗?

2 个答案:

答案 0 :(得分:0)

以批量大小读取行(可能大小为1000)并尝试使用mysql的bulk_update查询。我认为这个过程会比当前过程更快,因为较少的查询会更新更多数据。

答案 1 :(得分:0)

我同意你需要批处理。看看这个问题和最佳答案How can I do a batch insert into an Oracle database using Python?