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.