У меня есть скрипт импорта Python, который импортирует CSV.Импортирование 20 тыс. Строк в базу данных mysql занимает около 45 секунд.Проблема в том, что теперь у меня есть огромный файл (4 миллиона строк), и для импорта тех же самых строк в 20 тысяч, когда он достигает строки ~ 200 тысяч в файле, требуется около 200 секунд.
Я не знаю,вот какая-то проблема с БД или сам файл, читающий ... вот мой скрипт:
import csv
import mysql.connector
from mysql.connector import Error
import argparse
from itertools import islice
parser = argparse.ArgumentParser()
parser.add_argument('file', type=argparse.FileType('r'))
args = parser.parse_args()
def parseData(row):
sql = """INSERT INTO TABLE
(column1,column2)
VALUES( '%s','%s');""" % (
row['col1'],row['col2'],)
return sql
def dataImport(filename,connection,cursor):
data = csv.DictReader(filename,delimiter=';')
i = 0
for row in data:
sql = parseData(row)
try:
result = cursor.execute(sql)
pass
except Error as e:
pass
if i%20000 == 0:
connection.commit()
i=i+1
def importa(file):
try:
connection = mysql.connector.connect(host=host,
database=db,
user=user,
password=password)
if connection.is_connected():
db_Info = connection.get_server_info()
print("Connected to MySQL Server version ", db_Info)
cursor = connection.cursor()
dataImport(file,connection,cursor)
cursor.close()
except Error as e:
print("Error while connecting to MySQL", e)
if __name__ == "__main__":
importa(args.file)