Scenario
Ben csv dosyası verilerinin yaklaşık 100K satır var, veritabanına bir büyük CSV dosyası ve ekleri verilerini ayrıştırmak istiyorum.
Şu anda fgetcsv
yani şu anda veritabanı isabet sayısı 100K olan satır dosyası satır ayrıştırmak ve veritabanına veri eklemek ve böylece şu anda ben csv dosyası mevcut verilerin her bir hat için bir veritabanı isabet am kullanıyorum hangi değil bakış performans açısından iyi.
Current Code:
public function initiateInserts()
{
//Open Large CSV File(min 100K rows) for parsing.
$this->fin = fopen($file,'r') or die('Cannot open file');
//Parsing Large CSV file to get data and initiate insertion into schema.
while (($data=fgetcsv($this->fin,5000,";"))!==FALSE)
{
$query = "INSERT INTO dt_table (id, code, connectid, connectcode)
VALUES (:id, :code, :connectid, :connectcode)";
$stmt = $this->prepare($query);
// Then, for each line : bind the parameters
$stmt->bindValue(':id', $data[0], PDO::PARAM_INT);
$stmt->bindValue(':code', $data[1], PDO::PARAM_INT);
$stmt->bindValue(':connectid', $data[2], PDO::PARAM_INT);
$stmt->bindValue(':connectcode', $data[3], PDO::PARAM_INT);
// Execute the statement
$stmt->execute();
$this->checkForErrors($stmt);
}
}
Ben yerine veri her satır için Veritabanı isabet, ben sorguyu hazırlamak ve bir kez daha vurdu ve ekler ile Veritabanı doldurmak neyin bir yol arıyorum.
Herhangi Öneriler!
Note: Bu ben kullanıyorum ama CSV dosyası artık var tam örnek kod. alan ve kimliği, kod, connectid ve connectcode değil sadece ama emin ben mantığını açıklamak mümkün ve işte bu örnek kod kullanmış yapmak istedim.
Teşekkürler!