Имеется файл csv следующей структуры
ВГ0179;"Улица";"18";"49";"Фамилия";1956-02-04;017;"СГВ-15";"с/узел";2014-07-01;"1202";"2%";2014-10-01;2,2
Поскажите как его лучше перегнать в таблицу MySQL.
Пробовал этим кодом
<?php
include '../../connect.php';
$table = 'table'; // Имя таблицы для импорта
$filename = 'in.csv'; // Имя CSV файла, откуда берется информация
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$lineend=''; // Чем заканчивается строка в файле CSV
$query = "LOAD DATA INFILE 'D:\in.csv'
INTO TABLE table
character set utf8
FIELDS TERMINATED BY '".$delim."'
ENCLOSED BY '".$enclosed."'
LINES TERMINATED BY '".$lineend."'";
mysql_query ($query);
echo mysql_errno() . ": " . mysql_error() . "\n";
?>
Лог ошибки:
1261: Row 84374 doesn't contain data for all columns
вот строка 84374:
ВГ8;"улица";"18";"5";"Фамилия А.И.";;000148;"СГВ-15";"";2012-05-03;"22465";"2%";2014-10-01;60
Как исправить?
Пробовал экспортировать через цикл этим этим кодом:
$csv_open = fopen("in.csv", "r");
$r = 0;
while (($row = fgetcsv($csv_open, 1000, ';', '"')) != FALSE)
{
$r++;
if($r == 1) {continue;} // Не дает записать в БД первую строку
$ins="INSERT INTO `table` (`id`, `street`, `house_number`, `app_number`, `description`, `device_id`, `old_meterage`) VALUES ('$row[0]', '$row[1]', '$row[2]', '$row[3]', '$row[8]', '$row[10]', '$row[13]')";
mysql_query($ins);
echo mysql_errno() . ": " . mysql_error();
}
fclose($csv_open);
Вопрос:
- Все работает отлично (нужные данные сохраняются в нужные ячейки), однако экспортируется около 7000 строк (причем при повторных попытках - от 7000 до 8000 строк), а должно порядка 100 000. В чем проблема?