[英]insert csv file with multiple insert in mysql python
我有一百万个记录CSV文件,我正在为一行插入插入文件,这需要22分钟。如果我使用加载数据到文件中需要60秒(但是出于安全目的,我不能使用它)另一个选择是多次插入或执行多次我很困惑如何使用多个插入,使用for循环执行多个插入。我希望计数器一次检查100行,并使用多个插入将其加载到数据库中,然后再次检查100行并插入直到文件结束,谢谢
#!/usr/bin/env python
import csv
import MySQLdb
import pysftp
import smtplib
#connection to
conn = MySQLdb.connect(host="xxxxx", # The Host
user="file_auto_proc", # username
passwd="Pxx@xxx!", # password
db="xxxxx") # name of the data base
x = conn.cursor()
try:
csv_data = csv.reader(file('Disc.csv'))
for row in csv_data:
x.execute("INSERT INTO fp_feed_stg (col1,col2) VALUES(%s, %s)", row)
conn.commit()
except Exception, e:
print repr(e)
print("Not inserted")
conn.close()
我正在检查行计数并使用ciel除以100,并将在for循环中指定范围(我未在此代码中显示此条件)
#!/usr/bin/env python
import csv
import MySQLdb
import pysftp
import smtplib
import itertools
#connection to
conn = MySQLdb.connect(host="xxx.xx.xxxxx.com", # The Host
user="xxxx", # username
passwd="P@xxx!", # password
db="xxxx") # name of the data base
x = conn.cursor()
csv_data = csv.reader(file('Disc1.csv'))
a=[]
i=0
k=0
for i in range(0,200):
for row in itertools.islice(csv_data, k, k+100):
a.append(row)
print row
print k
print k
sql="INSERT INTO fp_stg (col1,col2,col3,col4,col5,col6) VALUES(%s, %s, %s,%s, %s, %s)"
number_of_rows = x.executemany(sql, a)
a=[]
conn.commit()
#print i
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.