Mysql
 sql >> база данни >  >> RDS >> Mysql

Как ефективно да вмъкнете данни от CSV файл в MYSQL с помощта на Python?

Има много начини за оптимизиране на тази вложка. Ето някои идеи:

  1. Имате цикъл for за целия набор от данни. Можете да направите commit() на всеки около 100
  2. Можете вмъкнете много редове в едно вмъкване
  3. можете да комбинирате двете и да направите многоредово вмъкване на всеки 100 реда във вашия CSV.
  4. Ако python не е изискване за вас, можете да го направите директно с MySQL, както е обяснено тук . (Ако трябва да го направите с помощта на python, все пак можете да подготвите това изявление в python и да избягвате ръчно преминаване през файла).

Примери:

за номер 2 в списъка, кодът ще има следната структура:

def csv_to_DB(xing_csv_input, db_opts):
    print("Inserting csv file {} to database {}".format(xing_csv_input, db_opts['host']))
    conn = pymysql.connect(**db_opts)
    cur = conn.cursor()
    try:
        with open(xing_csv_input, newline='') as csvfile:
            csv_data = csv.reader(csvfile, delimiter=',', quotechar='"')
            to_insert = []
            insert_str = "INSERT INTO table_x (ID, desc, desc_version, val, class) VALUES "
            template = '(%s, %s, %s, %s, %s)'
            count = 0
            for row in csv_data:
                count += 1
                to_insert.append(tuple(row))
                if count % 100 == 0:
                    query = insert_str + '\n'.join([template % r for r in to_insert])
                    cur.execute(query)
                    to_insert = []
                    conn.commit()
            query = insert_str + '\n'.join(template % to_insert)
            cur.execute(query)
            conn.commit()
    finally:
        conn.close()


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не можете да се свържете с базата данни mysql?

  2. Групиране на подобни редове един до друг в MySQL

  3. Как да получите всеки N-ти ред в MySQL

  4. Тази локална сесия Flask-SQLAchemy причинява ли грешка на MySQL сървъра да е изчезнал?

  5. Общо MySQL данни?