Импорт Python CSV занимает слишком много времени после первых 200 тыс. Строк - PullRequest
1 голос
/ 19 сентября 2019

У меня есть скрипт импорта 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)
...