@Angelxalfa

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

Доброго времени суток. Имеется файл csv с дампом базы, в нем около 100 000 строк, и 14 колонок с данными (из них мне нужно только только 7).
Вначале пробовал экспортировать вот так:
<?php 
		include '../../connect.php';

   LOAD DATA INFILE 'in.csv' INTO TABLE table FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 ROWS;
?>

Однако этот код вообще не работал (результата никакого). И еще в исходном файле есть лишние "столбцы", а при таком методе, насколько я понимаю, нужно создать поля в таблице по кол-ву столбцов в файле csv и идет заполнение всех полей строка за строкой. Поэтому была идея экспортировать все данные, а потом удалить ненужные поля в таблице MySQL.

Потом наткнулся на другой метод экспорта и теперь экспортирую данные в таблицу Msql этим кодом:
$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. В чем проблема?
  2. И еще вопрос - исходный файл в csv приходит в кодировке windows - 1251. Приходится вручную переводить кодировку в UTF-8 перед запуском скрипта экспорта. Можно как-то сделать так, чтобы скрипт это делал автоматически?
  • Вопрос задан
  • 2543 просмотра
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽