06-06-2011, 11:47
|
|
|
חבר מתאריך: 06.06.07
הודעות: 749
|
|
הורדתי קובץ CSV של 179 מגה ואני רוצה לייצר ממנו טבלה ב DB
PHP קורס לי באמצע בגלל זיכרון
בקובץ שהורדתי יש מעל מיליון שורות
ניסיתי לשמור שורה שורה, זה עושה את העבודה אבל יקח לזה שנה בערך
אז עשיתי משהו כזה ללא הצלחה
קוד PHP:
set_time_limit(0);
$row = 1;
$a = array();
if (($handle = fopen(base_url()."css/IP2LOCATION-LITE-DB11.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 0, ",")) !== FALSE) {
//$this->print_data($data[0], $data[1], $data[2], $data[3], $data[4], $data[5], $data[9]);
//break;
$row++;
array_push($a, array( 'ip_num_start' => $data[0],
'ip_num_end' => $data[1],
'country_code' => strtolower($data[2]),
'country' => strtolower($data[3]),
'area' => strtolower($data[4]),
'city' => strtolower($data[5]),
'time_zone' => $data[9]));
if($row == 80000)
{
$this->save_data_batch('ip_address', $a);//save in DB
unset($a);
unset($row);
gc_collect_cycles();
$a = array();
$row = 1;
//echo 'done: '.$row;
//echo '<pre>';print_r($a);'</pre>';
//break;
}
}
fclose($handle);
}
תודה על העזרה
|