mysql veritabanına satır-by-satır metin dosyası içerik eklemek nasıl?

4 Cevap

Ben bu gibi içerik içeren bir metin dosyası var

bob
james
diva
games
library
info

ve i satır satır dosyayı okumak ve her hat için yeni bir satır olarak çizgi ile veritabanı hattına veri eklemek istiyorum bir php komut dosyası yazabilirsiniz nasıl merak ediyorum?

teşekkürler

4 Cevap

Eğer dosya ne kadar büyük bağlı olarak kullanabileceğiniz birkaç yaklaşım vardır.

  1. MySQL kullanın - mysql kullanılarak doğrudan CSV dosyaları alabilirsiniz LOAD DATA [LOCAL] INFILE

  2. PHP (küçük dosya): file() bir diziye dosyayı yüklemek için kullanabilirsiniz. Dizi üzerinde döngü ve her satırı INSERT

  3. PHP (büyük dosya): kullanmak fgets() to loop over the file a line at a time. Use this to build a bulk insert query (INSERT INTO ... VALUES (1), (2), (3))

Böyle bir şey çalışması gerekir:

$fh = fopen('file.txt','r');
$db =  new PDO("mysql:host=$host;dbname=$database", $username, $password);
while (!feof($fh)) {
  $line = fgets($fh);
  $db->exec("INSERT INTO mytable(line) VALUES ('$line');");
}

Bu süper-basitleştirilmiş cevap ama burada bazı temel bulunuyor:

$filename = "filename.txt";

while (!feof($fp)){
$string = fgets($fp, 1024); 
mysql_query("INSERT INTO <table> (<fieldname>) VALUES('$string')") 
}

Be careful about feof and plaintext, feof don´t return true after read last line and put your loop infinit

S: Bir DoubleCheck yapmak

while(!feof($fh)){
    $linha = fgets($fh,4096);
    if (!feof($fh)) { // doublecheck
        proccess what you need
    } else {fclose($fh); break 1;} // real eof
}

Bir test yapmak