У меня огромный текстовый файл, и я пытаюсь прочитать и вставить его построчно. это данные файла txt.
'REG','KOIL','Kohinoor Industries Ltd.','READY',4.82,2.82,3.82
'REG','EPQL','Engro Powergen Qadirpur Ltd.','READY',36.9495,33.4305,35.19
Функция для вставки данных
$file_path =FCPATH.'uploads/text/'.$file_name;
$psx_date=$this->input->post('file_date');
$open=fopen($file_path,"r");
$i=1;
while(!feof($open)){
$line=fgets($open);
if ($i>2){
$values = explode(",",$line);
$psx_symbol=str_replace('\'',null,$values[1]);
$no_of_rows=read_psx_where($psx_symbol,$psx_date);
if ($no_of_rows<=0){
$psx_data=array(
'PSX_SYMBOL' => $psx_symbol,
'PSX_DATE' => $psx_date,
'PSX_HIGH' => $values[4],
'PSX_LOW' => $values[5],
'PSX_CLOSE' => $values[6],
'PSX_DATETIME' => date('Y-m-d H:i:s'),
'PSX_SATUS' => 1
);
insert_psx_data($psx_data);
}
}
$i++;
}
fclose($open);
Сначала я пропускаю первые две строки тестового файла, а затем проверяю, существует ли такой же символ, поэтому пропустите эту строку.
Этот метод работает, но слишком большое замедление и превышение максимального времени выполнения.
Запустите его как интерфейс командной строки PHP, то есть из командной строки
Попробуйте пакетную вставку в CI. Он создает пакетный массив и сразу вставляет данные
Взгляните на этот ответ, он использует mysqlimport
для импорта полного файла. Тогда моя реализация была намного быстрее, но у меня было несколько файлов, поэтому я не использовал ее.
У меня есть несколько текстовых файлов, и я проверяю строку за строкой, есть ли запись в базе данных, поэтому пропустите эту строку, поэтому я не могу использовать insert_batch.
у любого может быть другой способ вставки данных текстового файла построчно в mysql, поэтому предложите мне.
Запустите его из командной строки, если вы запускаете один за другим из кода. это займет много времени.
@GautamD от 500 до 600 текстовых файлов, данные которых мы должны вставить в базу данных, поэтому мне нужно сгенерировать функцию для импорта данных этих файлов.
он работает, но слишком медленно, поэтому я не могу вставить полный файл и превышаю максимальное время выполнения.