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

Apa cara terbaik untuk membandingkan / menyisipkan / memperbarui produk dalam db MySQL dari file .CSV

Kami memiliki situasi yang sama. Setelah banyak upaya untuk membuat skrip lebih baik, kami memutuskan bahwa kami memerlukan pendekatan lain untuk membuat impor kami berhasil dan tidak memakan waktu ~10 jam.

Apa yang kami lakukan adalah membuang semua kode PHP, dan sebagai gantinya menggunakan mysqlimport untuk memuat konten file CSV langsung ke dalam tabel. Tabel itu sekarang berisi semua yang kita butuhkan, tetapi tidak dalam bentuk yang berguna bagi kita (tidak ada struktur, beberapa bidang memerlukan pemrosesan, dll.)

Namun, karena semuanya sekarang ada di database, kami dapat melakukan semua yang kami inginkan dengan kueri. Misalnya, menghapus semua data yang tidak lagi ada di file impor, cukup DELETE FROM structured_table AS st LEFT JOIN unstructured_table AS ut ON st.someField = ut.someField WHERE ut.someField IS NULL; , memperbarui catatan yang ada hanya UPDATE structured_table AS st INNER JOIN unstructured_table AS ut ON st.someField = ut.someField SET st.anotherField = CONCAT(ut.aField, ' ', ut.yetAnotherField); .

Jelas, untuk skrip impor yang kompleks, kueri Anda akan lebih kompleks dan Anda akan membutuhkan lebih banyak lagi. Anda bahkan mungkin perlu memasukkan beberapa prosedur tersimpan untuk melakukan pemrosesan pada masing-masing bidang. Tetapi jika Anda dapat mengambil pendekatan semacam ini, Anda akan berakhir dengan proses yang dapat menangani banyak data dan sangat skalabel.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengguna MySQL yang ditentukan sebagai definisi tidak ada

  2. Perancangan Basis Data Untuk Mengembangkan Aplikasi Web 'Kuis' menggunakan PHP dan MySQL

  3. python odo sql AssertionError:datashape harus tipe Record, dapat 0 * {...}

  4. Mysql bergabung dengan pencocokan waktu

  5. Hitung desil dari frekuensi di MySQL