PHP kullanarak dizideki Toplu işleme

4 Cevap php

Ben veritabanına eklenecek bir yüz bin kayıtları var çünkü .. Benim kaygım benim komut dosyası işleme zamanı, benim komut dosyası işleme süresini etkiler mi xml ayrıştırılır dizinin içindeki binlerce veri var mı? Orada ben toplu veritabanına veri ekleme süreci bir yolu?

4 Cevap

Bu SQL dosyaları için - ama (sadece kullanmak değil ise) bu model takip edebilirsiniz -

Bu

Bu şekilde büyük bir dosya vb küçük ekler ayrılır

Bu bypass php sunucu yapılandırmasını düzenleme ve Bu komut dosyası yürütme zamanı ve benzeri gibi vb bellek sınırları endişesi yardımcı olacaktır.

New Users can't insert links so Google Search "sql big dump" or if this works goto: www [dot] ozerov [dot] de [ slash ] bigdump [ dot ] php

Yani bile teorik veri kaynağı yerine SQl dosyası olarak dizisi kabul etmek yukarıdaki komut dosyasını değiştirebilir. Belli ki bazı değişiklik alacaktı.

Hope it helps. -R

Sözdizimi:

INSERT INTO tablename (fld1, fld2) VALUES (val1, val2), (val3, val4)... ;

Yani ettirmek yazabilirsiniz. gibi bu (kukla örnek):

foreach ($data AS $key=>$value)
{
    $data[$key] = "($value[0], $value[1])";
}
$query = "INSERT INTO tablename (fld1, fld2) VALUES ".implode(',', $data);

Bu büyük veri setlerinde oldukça hızlı olayı çalışır ve veri kümesi belleğe sığarsa performansı hakkında endişelenmeyin.

Onun işlem süresini etkilediği, ancak DB'ın işlem günlükleri 100k satırlar için bir geri alma segmenti oluşturmak için yeterince büyük olduğundan emin olmak gerekir olası.

Veya ADOdb sarıcı ile (http://adodb.sourceforge.net/):

// assuming you have your data in a form like this:
$params = array(
             array("key1","val1"),
             array("key2","val2"),
             array("key3","val3"),
             // etc...
          );
// you can do this:
$sql = "INSERT INTO `tablename` (`key`,`val`) VALUES ( ?, ? )";
$db->Execute( $sql, $params );