За последние 24 часа нас посетили 18043 программиста и 1651 робот. Сейчас ищут 1704 программиста ...

Быстрая загрузка csv в БД с переконвертацией в UTF-8

Тема в разделе "MySQL", создана пользователем Master3581, 22 фев 2017.

Метки:
  1. Master3581

    Master3581 Новичок

    С нами с:
    22 фев 2017
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте.
    Уже не первый день ищу способ, быстро заливать в БД, файл csv, который пользователи самостоятельно формируют из Excel таблицы. Проблема состоит в кодировке. Парсить естественно каждую строчу и перекодировать это долго. Прошу совета в данной ситуации.

    Вот запрос:

    Код (Text):
    1. $loadSQL = <<<'EOT'
    2. load data infile 'e:\\upload\\file.csv'
    3. into table back_db.bpk_new1
    4. fields terminated by ';' enclosed by '\"' escaped by '\\'
    5. lines starting by '' terminated by '\r\n'
    6. ignore 7 rows
    7. (br,ipn,pib,summ,date1,date2,date3,date4)
    8. set date1 = str_to_date(date1, '%d.%m.%Y'),
    9.     date2 = str_to_date(date2, '%d.%m.%Y'),
    10.     date3 = str_to_date(date3, '%d.%m.%Y'),
    11.     date4 = str_to_date(date4, '%d.%m.%Y');
    12. EOT;
    Вот ошибка:
    Здесь явно понятно что кодировка файла виновата. Если зайти Notepad++ и поменять кодировку на UTF-8 то все отрабатывает.

    Как сделать чтобы информация из файла вносилась сразу в нужной кодировке?
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Перекодируй весь файл сразу
     
  3. Master3581

    Master3581 Новичок

    С нами с:
    22 фев 2017
    Сообщения:
    2
    Симпатии:
    0
    Вопрос в следующем:
    1. По времени это должно быть как можно быстрее
    2. Файл CSV уже на сегодня 80 тыс строк и каждый день прибавляется чуть ли не по 500-1000

    Есть литература какае-то чтобы почитать. Буду благодарен.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Документация по mysql, там есть утилита, поищи mysql import from csv
    https://dev.mysql.com/doc/refman/5.7/en/load-data.html
     
    Master3581 нравится это.
  5. Drema

    Drema Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    117
    Симпатии:
    30
    1. Конвертировать весь файл сразу - это самый быстрый способ.
    2. Каждый день у вас будет добавляться 0.01 сек ко времени выполнения. Ко времени выхода вас на пенсию, скорость работы скрипта будет примерно 15 сек. Это нормально, это пойдёт.