Проблема добавления строк из *.txt в mysql

Paha123

Новичок
Приветствую! Мне нужно из текстового файла вставить данные в mysql. В *.txt формат данных такой:

|15341|ФИЛИАЛ УПРАВЛЕНИЯ "ГЛАВДАГЕСТАНСЕЛЬХОЗВОДСТРОЙ" - УПРАВЛЕНИЕ ПРОИЗВОДСТВЕННО-ТЕХНОЛОГИЧЕСКИХ КОМПЛЕКТАЦИЙ|УПТК|438|940630|ЛЕНИНСКИЙ РИК|НАЧАЛЬНИК|ЧОРАЕВ ЧАРА ДЖАМАЛАТОВИЧ|367010|Г МАХАЧКАЛА,ПР АМЕТ-ХАНА СУЛТАНА Р-Н ДСК| | | |367010|Г МАХАЧКАЛА,ПР АМЕТ-ХАНА СУЛТАНА Р-Н ДСК| | | |01016977|561018155| |90|82401365000|41086|01019198|708-П|940712|МАХАЧКАЛИНСКАЯ РП|0| |0|0|0|0|0|0|0|0|0|0|CV(1)|

т.е. разбит символом | , я написал скрипт который добавляет в базу данные. Но проблема в том что если в файле 15000 строк к примеру, то он добавляет только 6000, а если пробую ставить в файле примерно 6000 то в мускуле после добавления пишет 1200. Короче непонятно почему данные теряются по ходу.

Вот пример кода:

<?php
include ('login.php');
$file=file("data.txt");
$count=count($file);
echo $count;

print"</p>";

$handle = fopen ("data.txt", "r");
while (!feof ($handle)) {

$buffer = fgets($handle, 76096);
$x=$buffer;
$y = explode ('|', $x);

$y[1]=mysql_real_escape_string($y[1]);
$y[2]=mysql_real_escape_string($y[2]);
$y[3]=mysql_real_escape_string($y[3]);
$y[4]=mysql_real_escape_string($y[4]);
$y[5]=mysql_real_escape_string($y[5]);
$y[6]=mysql_real_escape_string($y[6]);
$y[7]=mysql_real_escape_string($y[7]);
$y[8]=mysql_real_escape_string($y[8]);
$y[9]=mysql_real_escape_string($y[9]);
$y[10]=mysql_real_escape_string($y[10]);
$y[11]=mysql_real_escape_string($y[11]);
$y[12]=mysql_real_escape_string($y[12]);
$y[13]=mysql_real_escape_string($y[13]);
$y[14]=mysql_real_escape_string($y[14]);
$y[15]=mysql_real_escape_string($y[15]);
$y[16]=mysql_real_escape_string($y[16]);
$y[17]=mysql_real_escape_string($y[17]);
$y[18]=mysql_real_escape_string($y[18]);
$y[19]=mysql_real_escape_string($y[19]);
$y[20]=mysql_real_escape_string($y[20]);
$y[21]=mysql_real_escape_string($y[21]);
$y[22]=mysql_real_escape_string($y[22]);
$y[23]=mysql_real_escape_string($y[23]);
$y[24]=mysql_real_escape_string($y[24]);
$y[25]=mysql_real_escape_string($y[25]);
$y[26]=mysql_real_escape_string($y[26]);
$y[27]=mysql_real_escape_string($y[27]);
$y[28]=mysql_real_escape_string($y[28]);
$y[29]=mysql_real_escape_string($y[29]);
$y[30]=mysql_real_escape_string($y[30]);
$y[31]=mysql_real_escape_string($y[31]);
$y[32]=mysql_real_escape_string($y[32]);
$y[33]=mysql_real_escape_string($y[33]);
$y[34]=mysql_real_escape_string($y[34]);
$y[35]=mysql_real_escape_string($y[35]);
$y[36]=mysql_real_escape_string($y[36]);
$y[37]=mysql_real_escape_string($y[37]);
$y[38]=mysql_real_escape_string($y[38]);
$y[39]=mysql_real_escape_string($y[39]);
$y[40]=mysql_real_escape_string($y[40]);
$y[41]=mysql_real_escape_string($y[41]);
$y[42]=mysql_real_escape_string($y[42]);



$sql = mysql_query ("INSERT INTO data (system_id,polnoe_name,sokrashname,register,data,organ,doljnost_rukov,FIO_rukov,pochtovi_index_fakt,
adres_fakt,telefon_fakt,fax_fakt,email_fakt,pochtovi_index_yurid,adres_yurid,telefon_yurid,fax_yurid,email_yurid,OKPO,INN,OKFS,
OKOPF,OKATO,OKOGU,OKPO_vishestoyashei,registr_nomer_izmenenii,data_reg_izm,organ_gos_reg_izm,ustavnoi_fond,OKONH_osn,OKONH_1,
OKONH_2,OKONH_3,OKONH_4,OKONH_5,OKONH_6,OKONH_7,OKONH_8,OKONH_9,OKONH_10,predpriyatie,unname42,unname43)
VALUES ('$y[1]','$y[2]','$y[3]','$y[4]','$y[5]','$y[6]','$y[7]','$y[8]','$y[9]','$y[10]','$y[11]','$y[12]','$y[13]',
'$y[14]','$y[15]','$y[16]','$y[17]','$y[18]','$y[19]','$y[20]','$y[21]','$y[22]','$y[23]','$y[24]','$y[25]','$y[26]',
'$y[27]','$y[28]','$y[29]','$y[30]','$y[31]','$y[32]','$y[33]','$y[34]','$y[35]','$y[36]','$y[37]','$y[38]','$y[39]','$y[40]',
'$y[41]','','')")or print mysql_error();

}
 

Pez!

Я твой сайт похапе писал
PHP:
<?php

set_time_limit(0); 

$db_file = './data.txt';
$file_content = file($db_file);

if (is_array($file_content) and (count($file_content) > 0)) {
    foreach ($file_content as $line_num => $line) {
        $data[$line_num] = explode('|', $line);
    }
}

foreach ($data as $key => $value) {
    array_pop($data[$key]);
    array_shift($data[$key]);
    $sql_ins[] = implode(',', $data[$key]);
}

$multi_v = '(' . implode('),(', $sql_ins) . ')';
echo $sql_query = 'INSERT INTO `data` VALUES(' . $multi_v . ')';
?>
Добавить код подключения и ескейпа данных. Интересно, как мускуль будет себя чувствовать после того как его изнасилуют 15 000 запросами.

PS: я еще только учусь, так что если есть за что - поругайте код)
 

Paha123

Новичок
Pez!
PS: я еще только учусь, так что если есть за что - поругайте код)
)), да ты прав)))) только учусь))
Чтото не получается, пробую выше предложенным способом, но вообще не добавляет данные. Заранее весьма всем бгагодарен!!!Помогите люди добрые, очень надо.
 

Paha123

Новичок
была ошибка тут $multi_v = '(' . implode('),(', $sql_ins) . ')'; в место запятой точку поставил. Теперь пишет после выполнения INSERT INTO `data` VALUES(()) .И ничего в mysql не добавляет.
 

Paha123

Новичок
Вот пробую сразу с phpmyadmin добавлять

LOAD DATA INFILE 'data1.txt'
INTO TABLE temp
FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n';

Ошибка

#1261 - Row 13588 doesn't contain data for all columns

Как обойти эту ошибку?
 

Paha123

Новичок
Все разобрался. сделал с pma

SET SESSION sql_mode=0;
LOAD DATA INFILE 'data1.txt'
INTO TABLE temp
FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n';
 
Сверху