Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara Memasukkan Dataframe Panda Besar ke tabel MySQL dengan Pernyataan Sisipan Paralel?

Anda dapat melakukan beberapa hal untuk mencapainya.

Salah satu caranya adalah dengan menggunakan argumen tambahan saat menulis ke sql.

df.to_sql(method = 'multi')

Menurut dokumentasi ini , meneruskan 'multi' ke argumen metode memungkinkan Anda untuk menyisipkan secara massal.

Solusi lain adalah dengan membuat fungsi penyisipan khusus menggunakan multiprocessing.dummy. Berikut adalah tautan ke dokumentasi: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')

Metode kedua disarankan di 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. Cara Menemukan dan Mengganti Teks di Database MySQL menggunakan SQL

  2. Mereferensikan tabel kueri luar dalam subkueri

  3. Cara memasukkan nilai NULL dalam kueri dengan Outer Join dan Group By

  4. Mempercepat sejumlah besar pembaruan dan penyisipan mysql

  5. MySQL Periksa apakah tabel ada kesalahan