@Angelxalfa

Как экспортировать данные из csv в Mysql?

Имеется файл 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);


Вопрос:

  1. Все работает отлично (нужные данные сохраняются в нужные ячейки), однако экспортируется около 7000 строк (причем при повторных попытках - от 7000 до 8000 строк), а должно порядка 100 000. В чем проблема?
  • Вопрос задан
  • 4037 просмотров
Решения вопроса 1
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Года рождения не хватает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы