Импорт в Mysql через файл .CSV

#mysql #csv #load-data-infile

#mysql #csv #загрузка-data-infile

Вопрос:

В настоящее время имеется : LOAD DATA LOCAL INFILE '/Users/RkG/Desktop/Microblogs.csv' INTO TABLE blogs

импорт

Это пример данных, которые я пытаюсь импортировать. изображение 2

img3

Последнее изображение является результатом выполненного мной запроса, а второе изображение — скриншот структуры таблицы, почему он не импортирует ‘создано на’, ‘местоположение’ и ‘Текст’???

Попробовав метод, приведенный ниже, я даю этот вывод: Как мне исправить этот формат даты?? изображение

ОТКРЫТЫЙ ТЕКСТ:

 3,5/18/2011 13:26,42.22717 93.33772,this convention filled with technology could be better don't plan on leaving anytime soon
3,5/10/2011 9:22,42.18881 93.35642,4 orang top scorer skrg  3 di antara nya pake adidas F50 adizero  Lightest fastest deadliest.
3,5/14/2011 9:22,42.22479 93.35922,Nike 'gana' el Mundial al patrocinador oficial Adidas // y eso que sus figuras fueron un fracaso rotundo...
3,5/6/2011 9:22,42.2469 93.32527,Positiiff    mau nabung beli kaos adidas aslii muller .. * basii bgt baru nabung skrg ya  hahaha
  

Комментарии:

1. 7/5/11 2: 50 кажется, это дата-время. Вы хотите загрузить только часть даты? Кроме того, вы должны использовать синтаксис set в load data, чтобы преобразовать эту строку в правильный формат.

2. Не могли бы вы показать пример кода, пожалуйста?

3. Я постараюсь опубликовать код, когда вы ответите на мой предыдущий вопрос 🙂 Более того, было бы полезно, если бы вы разместили 3 или 4 строки вашего csv в виде обычного текста вместо изображений. Таким образом, мы можем быстрее выполнить код.

4. @Nick — спасибо за ответ с кодом. Я должен поместить обычный текст для следующих сообщений. Еще раз спасибо

5. @user700070, пожалуйста, перестаньте редактировать вопрос и каждый раз выдавать другую информацию, это очень сбивает с толку!!!! Просто поместите туда информацию за один, может быть, за 2 захода, пожалуйста.

Ответ №1:

Предположим, что вы измените created_at с date на datetime, это даст вам представление. Адаптируйте модификаторы даты к вашим потребностям (я не знаю порядок дат и месяцев в вашей строке).

 load data local infile '/Users/RkG/Desktop/Microblogs.csv'
into table blogs 
fields terminated by ','
lines terminated by 'n'
(id,@created_at,location,text)
set created_at = str_to_date(@created_at,'%c/%d/%Y %k:%i')
  

Если эта последняя строка не работает для вас, смотрите:

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date

Комментарии:

1. Это работает для всего, кроме поля даты, оно делает все поля даты пустыми …. есть причина, почему

2. Вам нужно изменить последнюю строку на что-то вроде set created_at = str_to_date(@created_at,'%y-%m-%d %h:%i') . Вероятно, потребуется некоторое экспериментирование, чтобы все получилось правильно.

3. @user700070: Я уже просил вас опубликовать некоторую строку в виде обычного текста. Что вы хотите сохранить? Только дата и удалить часть времени или что? Пожалуйста, будьте более конкретны, чтобы получить правильный ответ.

4. @Johan — похоже, это не работает .. по-прежнему выдает 0000-00-0000 00 00 для столбца ‘created_at’

5. попробуйте этот набор created_at = str_to_date(@created_at,’%c /% d /% Y% k:%i’)

Ответ №2:

лучше попробуйте это приложение для импорта.CSV или .XLS файл непосредственно в базу данных mysql http://bloggerplugnplay.blogspot.in/2013/01/tool-to-import-csv-and-xls-to-mysql.html