Ada banyak cara untuk mengimplementasikan impor CSV. Kami telah melihat satu atau dua contoh sebelumnya. Bahkan, artikel ini memberikan dua contoh impor CSV ke MySQL
Tentang dua contoh
- Contoh cepat untuk sekadar mengimpor data dari file CSV yang ada
- Kode fitur interaktif untuk memilih CSV melalui formulir dan memproses impor CSV
Kode sederhana ini mengimpor CSV ke database MySQL menggunakan PHP. Yang dibutuhkan hanyalah file sumber CSV dan database target. Lihat prasyarat untuk bereksperimen dengan contoh ini di lingkungan Anda
Contoh Cepat
Impor CSV ke MySQL PHP
prepare("INSERT INTO tbl_users (userName, firstName, lastName) VALUES (?, ?, ?)"); $stmt->bind_param("sss", $row[1], $row[2], $row[3]); $stmt->execute(); } ?>Prasyarat
Blok di bawah ini berisi prasyarat untuk menjalankan contoh cepat CSV ke MySQL
Ini menampilkan data sumber dalam format CSV dan struktur database untuk memiliki tabel tbl_users
(1) File CSV sumber
1,kevin_tom,Kevin,Thomas 2,vincy,Vincy,Jone 3,tim_lee,Tim,Lee 4,jane,Jane,Ferro _(2) Menargetkan basis data MySQL
CREATE TABLE `tbl_users` ( `id` int(11) NOT NULL, `userName` varchar(255) NOT NULL, `firstName` varchar(255) NOT NULL, `lastName` varchar(255) NOT NULL, `create_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() ); ALTER TABLE `tbl_users` ADD PRIMARY KEY (`id`); ALTER TABLE `tbl_users` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;Langkah-langkah untuk mengimplementasikan mengimpor CSV ke MySQL
- Buat database target untuk menyimpan catatan CSV
- Rancang formulir impor dan tangani validasi
- Kembangkan titik akhir pembacaan file PHP untuk mengimpor CSV ke database MySQL
Contoh 2. Impor CSV ke MySQL yang lengkap dan unggulan
Mari kita lihat contoh rumit ini dengan mengikuti tiga langkah di atas. Ini menunjukkan kode yang dibuat untuk mencapai setiap langkah untuk mengimplementasikan impor CSV ke MySQL
Contoh ini menggunakan database yang sama dengan targetnya untuk mengimpor data CSV
Formulir HTML untuk memilih sumber CSV
Formulir HTML ini memungkinkan pengguna untuk memilih file sumber CSV. Itu menerima file CSV dan Excel untuk membaca data untuk diimpor
indeks. php (Formulir Impor)
Coose your file. Download template
Import CSV and Save Data
Skrip validasi CSS dan jQuery
Formulir di atas memanggil skrip validasi saat dikirim. Skrip validasi ada di jQuery untuk memeriksa apakah input file tidak kosong. Itu ada di bagian kepala dari indeks yang sama. halaman php
indeks. php (Validasi)
_dan gaya adalah,
gaya. css
body { font-family: Arial; width: 550px; font-size: 0.9em; margin: 60px auto; } .heading { text-align: center; } .form-container { border: #e0dfdf 1px solid; padding: 30px 30px 10px 30px; border-radius: 15px; margin: 10px auto; width: 350px; text-align: center; } .input-row { margin-top: 0px; margin-bottom: 20px; } .btn-submit { background: #efefef; border: #d3d3d3 1px solid; width: 100%; border-radius: 20px; cursor: pointer; padding: 12px; } .btn-submit:hover { background: #d9d8d8; border: #c3c1c1 1px solid; } .outer-container table { border-collapse: collapse; width: 100%; } .outer-container th { border-top: 2px solid #dddddd; background: #f9f9f9; padding: 8px; text-align: left; font-weight: normal; } .outer-container td { border-top: 1px solid #dddddd; padding: 8px; text-align: left; } .outer-container label { margin-bottom: 5px; display: inline-block; } #response { padding: 10px; border-radius: 15px; } .success { background: #c7efd9; border: #bbe2cd 1px solid; } .error { background: #fbcfcf; border: #f3c6c7 1px solid; } .file { border: 1px solid #cfcdcd; padding: 10px; border-radius: 20px; color: #171919; width: 100%; margin-bottom: 20px; }Impor CSV ke MySQL dalam PHP
Saat mengirimkan formulir, kode PHP memicu penangan baca CSV. Fungsi readUserRecords() dari kelas UserModel sedang melakukan penguraian CSV ini
indeks. php (Memicu pembacaan CSV di PHP)
readUserRecords(); } ?> _dan kelas UserModel berisi fungsi untuk melakukan hal berikut
Kelas model ini menghubungkan database dalam konstruktornya dan mengatur objek koneksi
UserModel. php
conn = new DataSource(); } function getAllUser() { $sqlSelect = "SELECT * FROM users"; $result = $this->conn->select($sqlSelect); return $result; } function readUserRecords() { $fileName = $_FILES["file"]["tmp_name"]; if ($_FILES["file"]["size"] > 0) { $file = fopen($fileName, "r"); $importCount = 0; while (($column = fgetcsv($file, 10000, ",")) !== FALSE) { if (! empty($column) && is_array($column)) { if ($this->hasEmptyRow($column)) { continue; } if (isset($column[1], $column[3], $column[4])) { $userName = $column[1]; $password = $column[2]; $firstName = $column[3]; $lastName = $column[4]; $insertId = $this->insertUser($userName, $password, $firstName, $lastName); if (! empty($insertId)) { $output["type"] = "success"; $output["message"] = "Import completed."; $importCount ++; } } } else { $output["type"] = "error"; $output["message"] = "Problem in importing data."; } } if ($importCount == 0) { $output["type"] = "error"; $output["message"] = "Duplicate data found."; } return $output; } } function hasEmptyRow(array $column) { $columnCount = count($column); $isEmpty = true; for ($i = 0; $i < $columnCount; $i ++) { if (! empty($column[$i]) || $column[$i] !== '') { $isEmpty = false; } } return $isEmpty; } function insertUser($userName, $password, $firstName, $lastName) { $sql = "SELECT userName FROM users WHERE userName = ?"; $paramType = "s"; $paramArray = array( $userName ); $result = $this->conn->select($sql, $paramType, $paramArray); $insertId = 0; if (empty($result)) { $hashedPassword = password_hash($password, PASSWORD_DEFAULT); $sql = "INSERT into users (userName,password,firstName,lastName) values (?,?,?,?)"; $paramType = "ssss"; $paramArray = array( $userName, $hashedPassword, $firstName, $lastName ); $insertId = $this->conn->insert($sql, $paramType, $paramArray); } return $insertId; } } ?>Daftar data yang diimpor dari database
Ini untuk menutup loop proses impor CSV ke MySQL. Dengan langkah ini, pengguna mengalami bahwa impor berhasil diselesaikan
Ini menunjukkan data yang diimpor di layar. Alih-alih menampilkan pesan statis seperti 'Impor berhasil', ini akan memberikan pengalaman pengguna yang baik