Impor csv besar ke mysql

Saya tahu saya tahu. Bagaimana Anda bisa menempatkan PHP dan Cepat di baris yang sama? . Anda harus mencoba PHP 7 dan mengalaminya sendiri. Akan ada banyak kritik untuk artikel ini. Silakan baca

LOAD DATA INFILE_ adalah opsi terbaik untuk mengimpor file CSV yang besar. Pada artikel ini kita akan melihat bagaimana kita akan membaca file CSV dan catatan INSERT melalui skrip PHP. Ini dapat digunakan dalam kasus khusus

Secara umum PHP tidak akan memiliki kasus penggunaan seperti itu. Tapi Anda tidak pernah tahu, kapan Anda akan menemukan situasi seperti itu, kebutuhan klien bisa datang kapan saja. Ketika Anda adalah "programmer lepas" (tidak memainkan peran konsultan), Anda akan didorong dengan segala macam persyaratan gila

Saya telah menulis artikel tentang semua hal CSV di PHP. Anda harus mempelajarinya untuk mempelajari cara menangani file CSV di PHP

Saya sangat menyadari tentang tolok ukur mikro dan jebakannya. Jadi, saya tidak pergi ke arah itu untuk artikel ini. Itu sebabnya saya memberikan judul hanya dalam hitungan detik. Ini perkiraan. Ini bukan untuk orang yang akan melihat dalam mikro, nano detik

Jika Anda ingin memasukkan sejuta catatan dalam beberapa detik, menggunakan skrip PHP secara terprogram, maka ini pasti akan membantu. Kasus penggunaan jarang dan jadi solusinya. Anda mungkin harus melakukan beberapa penyesuaian di sana-sini dalam kode contoh ini agar sesuai dengan kasus Anda

getMessage(), E_USER_NOTICE); return false; } return true; } $link = mysqli_connect("localhost", "root", "pass", "huge-csv"); $success = file_get_contents_chunked($link, "sample-dataset.csv", 2048, '', function ($chunk, &$handle, $iteration, &$queryValuePrefix, $link) { $TABLENAME = 'tbl_lead'; $chunk = $queryValuePrefix . $chunk; // split the chunk of string by newline. Not using PHP's EOF // as it may not work for content stored on external sources $lineArray = preg_split("/\r\n|\n|\r/", $chunk); $query = 'INSERT INTO ' . $TABLENAME . '(id, name, email) VALUES '; $numberOfRecords = count($lineArray); for ($i = 0; $i < $numberOfRecords - 2; $i ++) { // split single CSV row to columns $colArray = explode(',', $lineArray[$i]); $query = $query . '(' . $colArray[0] . ',"' . $colArray[1] . '","' . $colArray[2] . '"),'; } // last row without a comma $colArray = explode(',', $lineArray[$i]); $query = $query . '(' . $colArray[0] . ',"' . $colArray[1] . '","' . $colArray[2] . '")'; $i = $i + 1; // storing the last truncated record and this will become the // prefix in the next run $queryValuePrefix = $lineArray[$i]; mysqli_query($link, $query) or die(mysqli_error($link)); /* * {$handle} is passed in case you want to seek to different parts of the file * {$iteration} is the section of the file that has been read so * ($i * 4096) is your current offset within the file. */ }); if (! $success) { // It Failed }

Dua hal utama yang perlu diperhatikan adalah,

  1. Baca file dalam potongan (batch)
  2. Sisipkan banyak catatan dalam satu pernyataan penyisipan

Hal di atas adalah kunci dalam mempercepat keseluruhan proses. Membaca baris demi baris dan mengulang melalui satu putaran akan memperlambat proses. Jadi semuanya bermuara pada membaca potongan (batch) dan multi insert. Kemudian poin ketiga yang perlu disebutkan adalah gunakan fungsi asli PHP sedapat mungkin

Saya telah menggunakan Regex untuk mengganti baris baru di file CSV. Jika Anda memiliki opsi yang lebih baik, silakan sarankan melalui bagian komentar di bawah

Sekarang izinkan saya menelusuri kodenya.  

Ketakutan PHP memungkinkan untuk membaca dalam potongan string. Cobalah bereksperimen dengan ukuran bongkahan (batch) yang berbeda. Tidak ada ukuran yang tepat. Ada banyak variabel, konfigurasi server Anda, perangkat keras, pengaturan MySQL, dan banyak lagi

Saya telah menggunakan contoh file CSV yang saya hasilkan sendiri. Saya akan merinci prosesnya di bawah ini. Anda dapat menggunakan sampel Anda sendiri atau data asli dan meneruskannya sebagai parameter

file_get_contents_chunked melakukan pemrosesan file CSV dan ini memiliki fungsi callback sebagai argumen terakhir. Panggilan balik ini menangani penguraian catatan oleh pembatas (koma dalam contoh saya) dan membuat kueri multi-sisipkan dan melakukan penyisipan yang sebenarnya

Anda mungkin harus mengubah bagian kueri agar sesuai dengan format tabel database Anda. Struktur keseluruhan skrip menangani penguraian CSV dalam potongan (batch) dan panggilan balik. Terima kasih kepada RobertPitt.  

Satu hal yang perlu disebutkan adalah, alih-alih membaca baris demi baris, saya menggunakan potongan itu untuk meningkatkan kecepatan. Semua melalui pengguna Internet telah menyarankan fgetcsv. Tapi saya telah melanjutkan dengan membaca chunk (batch) dari ketakutan.  

Ketakutan ketika membaca sebagai potongan (batch) itu jelas akan membuat bagian dari baris CSV terpotong. Saya telah menyimpan catatan terakhir yang terpotong itu di setiap potongan dalam variabel $queryValuePrefix. Itu dipertahankan dengan mendeklarasikan sebagai referensi melalui callback.  

Contoh kumpulan data CSV

Saya menulis skrip PHP kecil untuk menghasilkan kumpulan data CSV yang diperlukan. Ada banyak sumber seperti catatan sensus Pemerintah, data Covid yang sekarang populer, data cuaca dan banyak lagi

Di era Kecerdasan Buatan saat ini, di mana Penambangan Data lebih populer daripada Twinkle Twinkle Little Star, mendapatkan sampel file CSV besar hanya dengan sekali klik

Bagaimana cara mengimpor file CSV besar ke MySQL?

Mengimpor CSV ke MySQL Menggunakan Workbench .
Membuka wizard Impor di meja kerja MySQL. Untuk membuka wizard Impor, arahkan perhatian Anda ke panel navigator yang biasanya ada di sisi kiri meja kerja MySQL. .
Memilih sumber data. .
Memilih/membuat tabel. .
Mengisi pengaturan lanjutan

Bagaimana cara mengimpor file CSV besar?

Jadi, bagaimana cara membuka file CSV besar di Excel? . Pisahkan file CSV menjadi beberapa file yang lebih kecil yang sesuai dengan batas 1.048.576 baris ; .

Bagaimana cara mengimpor dataset besar di MySQL?

Langkah pertama adalah membuat database, Sekarang ketikkan perintah dalam cmd untuk menampilkan semua file yang termasuk dalam database dengan mengetik show database. Setelah membuat dan memilih database, Impor file sql menggunakan perintah ini. Anda telah berhasil menyelesaikan proses mengunggah database besar di MySQL

Bagaimana cara mengimpor file CSV besar di beberapa tabel MySQL?

Jadi, ini diperlukan pada saat membuat koneksi database di PHP PDO, jika kita ingin mengimpor file besar CSV dengan menggunakan perintah LOAD FILE MYSQL. After this you can find query with LOAD DATA LOCAL INFILE command, it will read CSV file data from temporary location of selected CSV file.

Postingan terbaru

LIHAT SEMUA