MyOfficeLife

Чтиво

Главная » Статьи » Обучение » MySQL

MySQL: Как загрузить русский текст в таблицу из CSV файла.

   Для начала расскажу как вообще загружать в MySQL таблицу данные из CSV файла созданного в Excel.

   Для загрузки данных из CSV используется команда LOAD DATA INFILE.

  Пример использования:

  Файл который мы будем загружать в Excel выглядит так:

Допустим у нас на диске D на локальном компьютере лежит файл rutext.csv созданный в Excel. Для загрузки данных из файла сначала создайте в MySQL таблицу которая будет содержать все поля которые присутствуют в нашем csv файле. Далее в MySQL пишем запрос:

LOAD DATA LOCAL INFILE 'D:/rutext.csv'

INTO TABLE `my_table'

FIELDS TERMINATED BY ';'

IGNORE 1 LINES

('date','text')

 

Разберём каждую строку отдельно:

1.LOAD DATA LOCAL INFILE 'D:/rutext.csv'

Команда загрузки данных из файла, оператор LOCAL нужен в случаях когда вы хотите загрузить данные на удалённый сервер, если MySQL сервер с базой в которую вы планируете загрузить данные установлен на вашем локальном компьютере то оператор LOCAL можно опустить. После оператора INFILE в одинарных кавычках необходимо прописать полный путь к файлу, папки и азделы разделяются через обратный слэш.

2.INTO TABLE `my_table'

Указываем таблицу в которую мы хотим загрузить данные, необходимо что бы в таблице присутствовали все поля которые есть в данных находящихся в csv файл.

3.FIELDS TERMINATED BY ';'

Данная строка указывает на символ который является разделителем в файле csv. В excel по умолчанию при сохранении файла в csv формате по умолчанию поля разделяются через точку с запятой, соответственно и нам надо указать  точку с запятой в качестве разделителя. Для проверки как у вас делится файл откройте его в блокноте, (правый клик мыши на файле - открыть с помощью - блокнот)

Файл будет выглядеть следующим образом:

Как видно из скрина поля в нашем файле разделяются через точку с запятой.

4.IGNORE 1 LINES

Эта строка говорит пропустить 1ую строку csv файла, применяется в том случае если в csv файле первая строка является названием полей, если в csv у вас просто массив данных и в первой строке не прописаны названия полей эту строку писать не надо, т.к. в этом случае не будет загружена 1 строка файла. В нашем примере как вы видите из скрина выше название полей в файле присутсвуют , первая строка содержит названия "Дата" и "Комментарий".

5.('date','text')

Последняя строка указывает поля MySQL таблицы, её нужно писать в том случае если в MySQL таблице вы хотите загрузить данные не во все столбцы, например если в MySQL таблице у вас есть поле ID которое заполняется через AUTO_INCREMENT автоматически, то вам его загружать не надо. Порядок полей должен быть указан строго в том же порядке в котором расположены данные в файле csv.

 

По сути всё, таким образом вы без проблем загрузите данные из файла, проблема у вас возникнет если в вашем файле содержится русский текст.

Как корректно загрузить данные из csv файла созданного в Excel в котором содержится русский текст?

Сначала нам надо понять причину почему же русский текст у нас либо вообще не загружается, либо загружается в виде кракозябликов. Всё дело в том что по умолчанию csv файл созданный в Excel сохраняется в кодировке Windows 1251, а таблица в MySQL скорее всего у вас в кодировке UTF8, в связи с этим конфликтом кодировок у вас и возникает проблемма с загрузкой руского текста.

Наиболее простой способ перекодировать созданный ранее csv файл воспользоваться notepad++, бесплатную версию этой программы можно скачать тут

Откройте свой csv файл в notepad++ , в меню "Кодировки" выберите пункт "Преобразовать в UTF8".

После перекодировки в нижнем углу вы увидите информацию о том что кодировка файла теперь UTF8.

Далее просто сохраните эти изменения и смело можете загружать файл с помощью написанного в начале статьи запроса:

LOAD DATA LOCAL INFILE 'D:/rutext.csv'

INTO TABLE `my_table'

FIELDS TERMINATED BY ';'

IGNORE 1 LINES

('date','text')

Категория: MySQL | Добавил: selesnow (04.03.2015) | Автор: Алексей Селезнев
Просмотров: 2105 | Комментарии: 3 | Теги: load data infile, MySQL, excel, кирилица, загрузка данных | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:

Категории раздела

Excel [4]
Приёмы и хитрости Excel
Экономика [8]
MySQL [7]
Приёмы , описание функций , решение практических задачь
Маркетинг [7]
Google Spreadsheets/Google Таблицы [0]

Реклама

Поделиться

Слушать радио


Курс в обменниках

Курсы наличного обмена на сегодня

Курс НБУ

 Курсы НБУ на сегодня

Курсы ЦБР

Курсы ЦБ РФ на сегодня

Конвертер валют

Калькулятор валют

Киевское время

Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0

LiveInternet

Rambler

Yandex

Яндекс.Метрика

Mail.RU

Рейтинг@Mail.ru

HotLog

OpenStar

Форма входа