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

Làm thế nào để Chèn Khung dữ liệu Gấu trúc Lớn trong bảng MySQL với Câu lệnh Chèn Song song?

Bạn có thể làm một số điều để đạt được điều đó.

Một cách là sử dụng một đối số bổ sung trong khi ghi vào sql.

df.to_sql(method = 'multi')

Theo tài liệu này , việc chuyển đối số 'multi' sang phương thức cho phép bạn chèn hàng loạt.

Một giải pháp khác là tạo một hàm chèn tùy chỉnh bằng multiprocessing.dummy. Đây là liên kết đến tài liệu: https://docs.python.org/2/library/multiprocessing.html#module-multiprocessing.dummy

import math
from multiprocessing.dummy import Pool as ThreadPool

...

def insert_df(df, *args, **kwargs):
    nworkers = 4 # number of workers that executes insert in parallel fashion

    chunk = math.floor(df.shape[0] / nworkers) # number of chunks
    chunks = [(chunk * i, (chunk * i) + chunk) for i in range(nworkers)]
    chunks.append((chunk * nworkers, df.shape[0]))
    pool = ThreadPool(nworkers)

    def worker(chunk):
        i, j = chunk
        df.iloc[i:j, :].to_sql(*args, **kwargs)

    pool.map(worker, chunks)
    pool.close()
    pool.join()

....

insert_df(df, "foo_bar", engine, if_exists='append')

Phương pháp thứ hai được đề xuất tại https://stackoverflow.com/a/42164138/5614132 .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysqldump 'không được công nhận là một chương trình lệnh nội bộ hoặc bên ngoài có thể hoạt động hoặc tệp hàng loạt

  2. java - DataSource cho ứng dụng độc lập - không có máy chủ ứng dụng

  3. Cập nhật chế độ xem trong MySQL

  4. Câu lệnh chuẩn bị MySql - có thể tham số hóa tên cột hoặc tên hàm không?

  5. bỏ qua sao chép vào bảng tmp trên đĩa mysql