Impor csv ke mysql php

Saya mengalami sedikit masalah saat mencoba mengimpor data dari CSV dan memiliki beberapa pertanyaan yang belum berhasil saya selesaikan sendiri

Pertama, inilah kode saya untuk membantu menempatkan segala sesuatunya dalam perspektif (merapikannya sedikit, menghapus koneksi CSS dan DB)


" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . ""; echo "

Displaying contents:

"; readfile($_FILES['filename']['tmp_name']); } //Import uploaded file to Database $handle = fopen($_FILES['filename']['tmp_name'], "r"); while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $import="INSERT into importing(text,number)values('$data[0]','$data[1]')"; mysql_query($import) or die(mysql_error()); } fclose($handle); print "Import done"; //view upload form } else { print "Upload new csv by browsing to file and clicking on Upload
\n"; print ""; print "File name to import:
\n"; print "
\n"; print ""; } ?>

Ini pada dasarnya adalah adaptasi dari contoh yang saya temukan setelah banyak upaya dengan berbagai metode

CSV saya memiliki dua kolom data, yang pertama adalah teks dan yang kedua adalah bilangan bulat Tabel dalam database juga memiliki dua kolom, yang pertama disebut "teks" dan yang kedua "angka"

Selamat datang di tutorial singkat tentang cara mengimpor file CSV ke database MYSQL di PHP. Ingin mengizinkan administrator mengunggah set data mereka sendiri ke dalam database?

ⓘ Saya telah menyertakan file zip dengan semua kode sumber contoh di awal tutorial ini, jadi Anda tidak perlu menyalin-tempel semuanya… Atau jika Anda hanya ingin langsung masuk

 

 

TLDR – SLIDE CEPAT

Unduh & Catatan

 

 

UNDUH & CATATAN

Pertama, berikut adalah tautan unduhan ke contoh kode sumber seperti yang dijanjikan

 

CATATAN CEPAT

  • Buat basis data pengujian dan impor 1a-users.sql
  • Ubah pengaturan basis data di 3-import.php_ menjadi milik Anda sendiri
  • Akses 2-upload.html di browser dan unggah 1b-users.csv
Jika Anda menemukan bug, jangan ragu untuk berkomentar di bawah ini. Saya mencoba menjawab pertanyaan singkat juga, tetapi itu adalah satu orang versus seluruh dunia… Jika Anda sangat membutuhkan jawaban, silakan periksa daftar situs web saya untuk mendapatkan bantuan dalam pemrograman

 

DOWNLOAD KODE CONTOH

Klik di sini untuk mengunduh kode sumber, saya telah merilisnya di bawah lisensi MIT, jadi silakan membangun di atasnya atau menggunakannya dalam proyek Anda sendiri

 

IMPOR CSV KE DATABASE MYSQL

Baiklah, sekarang mari kita masuk ke contoh cara import file CSV di PHP dan MySQL

 

LANGKAH 1) DATABASE DUMMY & CSV

1A) TABEL PENGGUNA

1a-pengguna. sql

CREATE TABLE `users` (
  `user_id` bigint(20) NOT NULL,
  `user_email` varchar(255) NOT NULL,
  `user_name` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER TABLE `users`
  ADD PRIMARY KEY (`user_id`),
  ADD UNIQUE KEY `user_email` (`user_email`),
  ADD KEY `user_name` (`user_name`);

ALTER TABLE `users`
  MODIFY `user_id` bigint(20) NOT NULL AUTO_INCREMENT;
_

Untuk contoh ini, kami akan bekerja dengan tabel pengguna dummy ini. Sangat mudah dengan hanya 3 bidang -

  • user_id ID, kunci utama
  • user_email Email pengguna
  • <form action="3-import.php" method="post" enctype="multipart/form-data">
      <input type="file" name="upcsv" accept=".csv" required>
      <input type="submit" value="Upload">
    </form>
    0 Nama pengguna

 

1B) CSV PENGGUNA

jane@doe. com Jane Doe Joe@doe. comJoe Doe John@doe. com John Doe

Itu benar. Hanya sekumpulan email dan nama pengguna

 

 

LANGKAH 2) UNGGAH FILE CSV

2-unggah. html

<form action="3-import.php" method="post" enctype="multipart/form-data">
  <input type="file" name="upcsv" accept=".csv" required>
  <input type="submit" value="Upload">
</form>

Selanjutnya, kami memiliki formulir pengunggahan file HTML sederhana yang hanya menerima file CSV

 

LANGKAH 3) PHP IMPOR CSV KE MYSQL

3-impor. php

<?php
// (A) CONNECT TO DATABASE - CHANGE SETTINGS TO YOUR OWN!
$dbHost = "localhost";
$dbName = "test";
$dbChar = "utf8";
$dbUser = "root";
$dbPass = "";
try {
  $pdo = new PDO(
    "mysql:host=".$dbHost.";dbname=".$dbName.";charset=".$dbChar,
    $dbUser, $dbPass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
  );
} catch (Exception $ex) { exit($ex->getMessage()); }
 
// (B) READ UPLOADED CSV
$fh = fopen($_FILES["upcsv"]["tmp_name"], "r");
if ($fh === false) { exit("Failed to open uploaded CSV file"); }
 
// (C) IMPORT ROW BY ROW
while (($row = fgetcsv($fh)) !== false) {
  try {
    // print_r($row);
    $stmt = $pdo->prepare("INSERT INTO `users` (`user_email`, `user_name`) VALUES (?,?)");
    $stmt->execute([$row[0], $row[1]]);
  } catch (Exception $ex) { echo $ex->getmessage(); }
}
fclose($fh);
echo "DONE.";
_

Terakhir, skrip PHP untuk mengimpor file CSV yang diunggah

  1. Hubungkan ke basis data. Ingatlah untuk mengubah pengaturannya sendiri
  2. Coba buka file CSV yang diunggah
  3. Baca dan impor file CSV ke dalam basis data baris demi baris

Tamat

 

 

EKSTRA) REKOMENDASI ​​dan TIPS

<?php
// (A) SET TIME LIMIT (SECONDS)
set_time_limit(300);

// (B) DATA CHECK
while (($row = fgetcsv($fh)) !== false) {
  if (!filter_var($row[0], FILTER_VALIDATE_EMAIL)) {
    echo "INVALID EMAIL FORMAT - " . $row[1];
    continue;
  }
}

Contoh di atas akan bekerja dengan cukup baik, tetapi selalu berharap ada yang salah. Berikut adalah beberapa "kemungkinan kesalahan" umum dan tip untuk menanganinya

  • Skrip PHP akan kehabisan waktu saat mengimpor file CSV besar, "perbaikan" sederhana adalah menyetel waktu tunggu lebih lama dengan
    <form action="3-import.php" method="post" enctype="multipart/form-data">
      <input type="file" name="upcsv" accept=".csv" required>
      <input type="submit" value="Upload">
    </form>
    1. Cara lanjutan adalah menjalankan skrip impor di latar belakang – Lihat tautan di bawah
  • Pengguna terkadang akan mengacaukan data CSV. Misalnya dengan menukar kolom email/nama dan membiarkan baris kosong. Seperti di atas, periksa setiap sel sebelum Anda mengimpornya. Pastikan itu adalah email yang valid, bukan sel kosong, dll…
  • Lalu, ada juga masalah pengguna yang tidak sabar yang akan memuat ulang dan mengimpor lagi – Berakhir dengan entri duplikat. Terapkan kunci unik Anda sendiri di database untuk mencegah duplikat

 

 

Itu saja untuk tutorial ini, dan ini adalah bagian kecil tentang beberapa tambahan dan tautan yang mungkin berguna bagi Anda

 

  • Buka File – PHP
  • File Dapatkan CSV – PHP
  • Tetapkan Batas Waktu – PHP
  • PDO (Objek Basis Data) – PHP
  • Cara Menjalankan Skrip PHP Di Latar Belakang – Code Boxx

 

VIDEO TUTORIAL

 

LEMBAR CHEAT INFOGRAFIS

Terima kasih telah membaca, dan kami telah sampai di akhir panduan ini. Saya harap ini membantu Anda dengan proyek Anda, dan jika Anda ingin berbagi apa pun dengan panduan ini, jangan ragu untuk berkomentar di bawah ini. Semoga berhasil dan selamat membuat kode