#mysql #csv #load-data-infile
#mysql #csv #загрузка-data-infile
Вопрос:
В настоящее время имеется : LOAD DATA LOCAL INFILE '/Users/RkG/Desktop/Microblogs.csv' INTO TABLE blogs
Это пример данных, которые я пытаюсь импортировать.
Последнее изображение является результатом выполненного мной запроса, а второе изображение — скриншот структуры таблицы, почему он не импортирует ‘создано на’, ‘местоположение’ и ‘Текст’???
Попробовав метод, приведенный ниже, я даю этот вывод: Как мне исправить этот формат даты??
ОТКРЫТЫЙ ТЕКСТ:
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