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

Bekerja dengan pointer file pada csv

  1. Apakah fgets() yang terbaik untuk digunakan untuk ini? Ini cara yang bagus untuk melakukannya. Pilihan lain adalah membaca seluruh file ke dalam array dengan file() , lalu ulangi array dengan foreach() .

  2. Apakah saya perlu memasukkan panggilan balik? Tidak. Lakukan saja kueri setelah membaca setiap kumpulan baris dari file.

  3. Mulai dari mana? Saat penghitung mencapai ukuran batch, lakukan kueri. Kemudian atur penghitung kembali ke 0 dan atur string kueri kembali ke nilai awal. Terakhir, di akhir loop, Anda harus melakukan kueri dengan nilai yang tersisa (kecuali ukuran file adalah kelipatan tepat dari ukuran batch, dalam hal ini tidak akan ada yang tersisa).

$batch_size = 100;
$counter = 0;

//instead of executing query one by one,
//let us prepare 1 SQL query that will insert all values from the batch

$sql_prefix ="INSERT INTO workorderstest(id,parentid,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10) VALUES ";
$values = "";

while (($line = fgets($handle)) !== false) {
    $values .= "($line),";
    $counter++;
    if ($counter == $batch_size) {
        $values = substr($values, 0, strlen($values) - 1);
        $conn->query($sql_prefix . $values) or die($conn->error);
        $counter = 0;
        $values ="";
    }
}
if ($counter > 0) { // Execute the last batch
    $values = substr($values, 0, strlen($values) - 1);
    $conn->query($sql_prefix . $values) or die($conn->error);
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa praktik terbaik untuk menyimpan data khusus untuk Wordpress

  2. Ubah perilaku Session.delete() SQLAlchemy

  3. Mengapa saya mendapatkan Resource id #4 ketika saya menerapkan print_r() ke array di PHP?

  4. Menggunakan bidang DATE sebagai kunci utama dari dimensi tanggal dengan MySQL

  5. Dapatkan uuid yang dihasilkan setelah memasukkan php