簡體   English   中英

在mysql python中多次插入csv文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM