Webmaster ve Yazılım Geliştiriciler
Php Üzerinden Db Ye CVS Dosyası İmport Ederken Aldığım Hata
Php Üzerinden Db Ye CVS Dosyası İmport Ederken Aldığım Hata
-
Db de tablom hazır ve boş.
Yapmak isteidğim cvs dosyasını alıp dosyayı seçip db içerisine yüklemek.
Yükle dediğim anda 500 internal server error
Request Timeout
This request takes too long to process, it is timed out by the server. If it should not be timed out, please contact administrator of this web site to increase 'Connection Timeout'.
Hatasını alıyorum. Önce CVS dosyaları çok büyük ( 65000 row ) bu yüzden mi diye düşünüp 5000 rowa böldüm 1000 rowa böldüm gene aynı hata..
Php myadmin üzerinden 150000 rowluk CVS dosyalarını bile saniyesinde yükleyebiliyorken php üzerinden neden yükleyemiyorum, hatam nerede ?
Kod ;
<?php if (isset($_POST['xx_buton'])) { if (is_uploaded_file($_FILES['filename']['tmp_name'])) { echo "<h1>" . "Dosya " . $_FILES['filename']['name'] . " başarı ile yüklendi" . "</h1>"; echo "<h2>İçerik Gösteriliyor:</h2>"; readfile($_FILES['filename']['tmp_name']); } $handle = fopen($_FILES['filename']['tmp_name'], "r"); $firstRow = true; while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { if ($firstRow) { $firstRow = false; } else { $import2 = "INSERT INTO `navaids` SET `id`='{$data[0]}',`filename`='{$data[1]}',`ident`='{$data[2]}',`name`='{$data[3]}',`type`='{$data[4]}',`frequency_khz`='{$data[5]}',`latitude_deg`='{$data[6]}',`longitude_deg`='{$data[7]}',`elevation_ft`='{$data[8]}',`iso_country`='{$data[9]}',`dme_frequency_khz`='{$data[10]}',`dme_channel`='{$data[11]}',`dme_latitude_deg`='{$data[12]}',`dme_longitude_deg`='{$data[13]}',`dme_elevation_ft`='{$data[14]}',`slaved_variation_deg`='{$data[15]}',`magnetic_variation_deg`='{$data[16]}',`usageType`='{$data[17]}',`power`='{$data[18]}',`associated_xxx`='{$data[19]}'"; mysql_query($import2) or die(mysql_error()); } } fclose($handle); print "Yükleme Tamamlandı"; } else { print "Bu bölümde sadece xxxx tablosunu yüklemeniz gerekmektedir!<br />\n"; print "<form enctype='multipart/form-data' action='veritabaniguncelle.php' method='post'>"; print "Yüklemek istediğiniz dosyanın adı:<br />\n"; print "<input size='100' type='file' name='filename'><br />\n"; print "<input type='submit' name='xx_buton' value='xxx Tablosunu Yükle'></form>"; } ?>
....
iLLuMiNaTi tarafından 26/Eyl/16 18:33 tarihinde düzenlenmiştir -
Sayfanın üstüne set_time_limit(0); ifadesini koyabilir misiniz?
-
Hocam tek seferlik bir yükleme mi olacak?
Devamlı olacaksa bu kayıtlar güncellenecek mi yoksa yeni kayıtlar mı girecek? -
YeniHarman bunu yazdı
Sayfanın üstüne set_time_limit(0); ifadesini koyabilir misiniz?
Hocam onu yapmıştım yemedi ne yazık ki :(
-
blutarm bunu yazdı
Hocam tek seferlik bir yükleme mi olacak?
Devamlı olacaksa bu kayıtlar güncellenecek mi yoksa yeni kayıtlar mı girecek?Hocam her gece tablolar truncate olacak ve sistem cvs üzerinden yenilerini girecek boş tablolara
-
http://stackoverflow.com/a/11449458
şurada loop olmadan direkt query ile import etmeyi göstermiş.
-
pSkpt bunu yazdı
http://stackoverflow.com/a/11449458
şurada loop olmadan direkt query ile import etmeyi göstermiş.
Hocam bunuda inceleyecem gayette güzel duruyor fakat fopen read metodu ile tam oalyı çözdüm derken bu seferde tam %50 - %60 a gelince bağlantı sıfırlandı hatası veriyor şimdide buna takıldım.
Sitede yada bağlantıda bir sorun yok ama import etmeyi denediğim an böyle bir sorunla karşılaşıyorum
-
Hocam varsayalım sen db truncate ettin ve dosyayı upload ettin işlem sonrasında aşağıdaki kodu denermisin insert sıralaması db sıralamasına, fields terminated, enclosed kendine göre ayarlarsın.
<?php
$csvfiles= "upload/new.csv";
if(file_exists($csvfiles)) {
mysql_query("LOAD DATA LOCAL INFILE '".$location."'
INTO TABLE `TABLOADI`
CHARACTER SET UTF8
FIELDS TERMINATED BY ';'
ENCLOSED BY '\"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(`id`,`alan1`,`alan2`,`alan3`)");
unlink($location);
echo "Kayıtlar başarıyla yüklenmiştir";
}
else {
echo "CSV dosyası yüklenmemiş";
}
?>
blutarm tarafından 28/Eyl/16 11:27 tarihinde düzenlenmiştir -
Ve yine pSkpt ın el atması ile sorun çözülmüştür. Buradan tekrar teşekkür edeirm