Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để chèn dữ liệu tệp CSV vào MYSQL bằng Python một cách hiệu quả?

Có nhiều cách để tối ưu hóa phần chèn này. Dưới đây là một số ý tưởng:

  1. Bạn có một vòng lặp for trên toàn bộ tập dữ liệu. Bạn có thể thực hiện commit() cứ sau 100 hoặc lâu hơn
  2. Bạn có thể chèn nhiều hàng vào một lần chèn
  3. bạn có thể kết hợp cả hai và chèn nhiều hàng sau mỗi 100 hàng trên CSV của mình
  4. Nếu python không phải là yêu cầu bắt buộc, bạn có thể thực hiện trực tiếp bằng MySQL vì nó được giải thích tại đây . (Nếu phải sử dụng python, bạn vẫn có thể chuẩn bị câu lệnh đó bằng python và tránh lặp qua tệp theo cách thủ công).

Ví dụ:

đối với số 2 trong danh sách, mã sẽ có cấu trúc như sau:

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. Sự khác biệt MySql giữa hai dấu thời gian tính bằng Giây?

  2. json_encode cho truy vấn mysql trả về một số cột rỗng của một số hàng, nhưng các cột không rỗng

  3. Tập lệnh kiểm tra tình trạng sao chép MySQL

  4. Cách kiểm tra trạng thái máy chủ trong MySQL Workbench bằng GUI

  5. PHP gán câu lệnh select để thả xuống các giá trị danh sách