Как загрузить csv в mysql

Форум пользователей MySQL

Можно ли по-простому загрузить данные в CSV формате (данные, в строках, разделенные «,») в базу?

Нет ли готовых утилиток (с настройками)?

#2 25.04.2007 18:03:28

Re: Как загрузить CSV в базу

#3 25.04.2007 18:25:05

Re: Как загрузить CSV в базу

Да, Вы правильно ответили на свой вопрос

Для CSV (именно запятые, Excel иногда экспортирует с разделителем «;»)
настройки будут следующие (для случая UNIX, lines-terminated-by указывать
не нужно, значение по-умолчанию подойдет).

mysqlimport -c «column1,column2″ —local —fields-terminated-by=»,» —lines-terminated-by=»\\r\\n» tablename.csv

Двойные \\ использованы для того, чтобы bash не обработал их. Название
файла должно совпадать с названием таблицы.

Вообще, mysqlimport является оболочкой для команды LOAD DATA INFILE.
Лично я предпочитаю использовать ее, так не нужно задумываться о
правильном количестве обратных слешей и о названии файла:

LOAD DATA LOCAL INFILE ‘datafile. csv’
INTO TABLE tablename
FIELDS TERMINATED BY ‘,’
LINES TERMINATED BY ‘\r\n’
(column1, column2)

Если Вы приведете пример конкретных данных, можно будет написать
запрос, который будет подходить лично Вам.

загрузить CSV-файл в MySQL, используя пакет?

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

Вопросы:

1) Данные файла CSV могут иметь (запятую) между (например, описание), так как я могу выполнить импорт, обрабатывая эти данные?

2) Чтобы загрузить CSV из Excel, тогда данные, содержащие запятую, заключены в «» (двойные кавычки) [как в примере ниже], так как импорт может справиться с этим?

Вот пример CSV с заголовком:

Инструкция SQL используется для импорта:

Как я могу это сделать, это возможно?

1 ответ 1

Так как вы используете load data local infile и загрузку данных в таблицу с использованием MySQL, в рамках этой функции предоставляется простое решение, которое поможет вам решить эту проблему.

Вы просто хотите быть уверенным, что включите подпункт ENCLOSED BY ‘»‘ как часть предложения FIELD в используемый вами синтаксис MySQL — ниже приведен пример этого.

Это говорит MySQL, что во входном файле есть значения полей, которые заключены в двойные кавычки и разделены запятыми — все символы между двойными кавычками будут импортированы.

Дополнительные ресурсы

LOAD DATA INFILE может использоваться для чтения файлов, полученных из внешних источников. Например, многие программы могут экспортировать данные в формате значений, разделенных запятыми (CSV), чтобы строки имели поля, разделенные запятыми и заключенные в двойные кавычки, с начальной строкой имен столбцов. Если строки в таком файле завершаются парами возврата каретки / новой строки, показанный здесь оператор иллюстрирует параметры обработки полей и строк, которые вы использовали бы для загрузки файла:

Для ввода символ ENCLOSED BY , если имеется, удаляется с концов значений полей. (Это верно независимо от того, указано ли OPTIONALLY ; OPTIONALLY не влияет на интерпретацию ввода.) Проявления ENCLOSED BY характеру предшествует ESCAPED BY характеру интерпретируются как часть текущего значения поля.

Если поле начинается с символа ENCLOSED BY , экземпляры этого символа распознаются как завершающие значение поля, только если за ним следует поле или строка последовательности TERMINATED BY . Чтобы избежать неоднозначности, вхождения символа ENCLOSED BY в значении поля могут быть удвоены и интерпретироваться как один экземпляр символа. Например, если указано ENCLOSED BY ‘»‘ , кавычки обрабатываются, как показано здесь:

источник

Как загрузить CSV в MySQL с распределением данных по таблицам?

Нужно в CRM импортировать базу контактов. В самой системе нет функции импорта, поэтому это можно сделать только через БД. Есть файл CSV с определенными полями. В БД есть своя структура, в каждую таблицу нужно подставлять свои данные.

Как технически это можно сделать?

  1. Таблица клиенты — https://www. dropbox.com/s/yiyry32cmcawhx8/Screensh.
  2. Таблица пользователей — https://www.dropbox.com/s/nfk1cttocw25nus/Screensh.
  3. Таблица Custom fields для компаний и контактов (выводили туда Status, Category, email 2/3, phone 2/3 и тд)- https://www.dropbox.com/s/lz7oepxs6m0nlg3/Screensh.
  4. Пример базы для загрузки — https://www.dropbox.com/s/dmgkxwnry8asj3w/example.

По структуре контакт привязан к клиенту. В таблице пользовательских полей мы заводим все нужные поля для карточки клиента и контакта.

Комментарии разработчика CRM
—————
If you want to add clients, please take a look at clients table in database.
There are some simple fields, If you insert data there, that will be appear in clients section.

If you want to insert contacts, please take a look at users table.
The following fields are important:
first_name, last_name, email, user_type = «client», status=’active’, client_id, is_primary_contact.
—————

Можете подсказать пример SQL запроса или скрипта, который позволит загрузить базу в базу данных с распределением данных по таблицам?

Импорт CSV-файла в таблицу MySQL

В этой статье мы расскажем вам, как использовать оператор LOAD DATA INFILE для импорта CSV-файла в таблицу MySQL.

Оператор LOAD DATA INFILE позволяет считывать данные из текстового файла и очень быстро импортировать их в таблицу базы данных.

Перед импортом файла, вам необходимо подготовить следующее:

  • Таблицу базы данных, в которую будут импортированы данные из файла;
  • CSV-файл с соответствующим числом столбцов и соответствующим форматом данных в каждом столбце;
  • Учетную запись пользователя, который подключается к серверу базы данных MySQL и имеет привилегии FILE и INSERT .

Предположим, что мы имеем таблицу, которая называется discounts со следующей структурой:

Мы используем оператор CREATE TABLE , чтобы создать таблицу discounts :

Файл discounts.csv в первой строке содержит заголовки столбцов, в трех других строках — данные:

Следующий оператор импортирует данные из файла c:tmpdiscounts.csv в таблицу discounts :

Поля файла завершаются запятой, относящейся к FIELD TERMINATED BY ‘,’ , которая заключена в двойные кавычки, предусмотренные форматом ENCLOSED BY ‘»‘ .

Каждая строка CSV файла завершается символом новой строки, обозначающим TERMINATED BY ‘n’ .

Поскольку первая строка файла содержит заголовки столбцов, которые не должны быть импортированы в таблицу, мы игнорируем ее, указав опцию IGNORE 1 ROWS .

Теперь мы можем проверить, импортированы ли данные в таблицу discounts :

Преобразование данных при импорте

Иногда формат данных не соответствует целевым столбцам таблицы. В простых случаях, вы можете преобразовать их с помощью условия SET в операторе LOAD DATA INFILE .

Предположим, что столбец данных срока действия скидок в файле discount_2.csv имеет формат мм / дд / гггг:

При импорте данных в таблицу discounts мы должны преобразовать их в формат даты MySQL с помощью функции str_to_date() :

Импорт файла клиента для замещения на сервере базы данных MySQL

Можно импортировать данные от клиента (локального компьютера) на удаленный сервер базы данных MySQL, с помощью оператора LOAD DATA INFILE .

При использовании опции LOCAL в LOAD DATA INFILE клиентская программа считывает файл на стороне клиента и отправляет его на сервер MySQL. Файл будет загружен во временную папку базы данных сервера операционной системы, например, C: Windows Temp для ОС Windows или / TMP для Linux .

Эта папка не настраивается и не задается MySQL.

Давайте рассмотрим следующий пример:

Разница заключается только в опции LOCAL оператора. Если вы загружаете большой CSV файл, вы увидите, что с опцией LOCAL загрузка осуществляется немного медленнее, потому что требуется определенное время, чтобы передать файл серверу базы данных.

Учетная запись пользователя, под которым мы подключается к серверу MySQL для импорта данных, может не иметь привилегию FILE , если используется опция LOCAL .

При импорте файла от клиента на удаленный сервер базы данных с помощью LOAD DATA LOCAL могут возникнуть некоторые проблемы с безопасностью , о которых вы должны знать, чтобы избежать потенциальных рисков.

Импорт CSV файла с помощью MySQL Workbench

MySQL Workbench предоставляет инструмент для импорта данных в таблицу БД. Он позволяет редактировать данные перед внесением изменений.

Ниже приведены этапы импорта данных в таблицу БД:

Откройте таблицу, в которую будут загружаться данные:

Нажмите кнопку Import , выберите CSV файл и нажмите кнопку Open :

Просмотрите данные, нажмите кнопку Apply :

В MySQL Workbench появится диалоговое окно « Apply SQL Script to Database », нажмите кнопку Apply , чтобы добавить данные в таблицу БД.

Мы рассказали вам, как импортировать CSV в таблицу MySQL с помощью LOAD DATA LOCAL , а также с использованием MySQL Workbench .

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

Импорт csv в mysql через командную строку

спросил

Изменено 2 года, 7 месяцев назад

Просмотрено 224 тыс. раз

Я пытаюсь импортировать в mysql очень большой файл .csv (~4 ГБ). Я рассматривал возможность использования phpmyadmin, но тогда у вас максимальный размер загрузки 2 МБ. Кто-то сказал мне, что я должен использовать командную строку.

Я собирался использовать эти инструкции для импорта: http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html#c5680

Какой будет команда для установки первой строки в Таблица .csv в качестве имен столбцов в таблице mysql? Эта опция доступна через phpmyadmin, так что это тоже должна быть версия командной строки mysql, верно? Пожалуйста, помогите мне. Спасибо.

-Raj

  • mysql
  • csv
  • load-data-infile

Попробуйте эту команду

 загрузить локальный файл данных 'file.csv' в таблицу
 поля, оканчивающиеся символом ','
 заключено в '"'
 строки, оканчивающиеся символом '\n'
 (столбец1, столбец2, столбец3,...)
 

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

Для дальнейшего подробности см. в руководстве.

Для установки первой строки в качестве имен столбцов таблицы просто игнорируйте чтение строки и добавьте значения в команду.

18

попробуйте это:

 mysql -uusername -ppassword --local-infile scrapping -e «ЗАГРУЗИТЬ ЛОКАЛЬНЫЙ ИНФАЙЛ ДАННЫХ 'CSVname.csv' В ТАБЛИЦУ имя_таблицы ПОЛЯ, ЗАВЕРШЕННЫЕ ',' СТРОКИ, ЗАВЕРШЕННЫЕ '\n'"
 

Вы можете сделать

 mysqlimport --columns='head -n 1 $yourfile' --ignore-lines=1 dbname $yourfile`
 

То есть, если ваш файл разделен запятой и не разделен точкой с запятой. В противном случае вам может понадобиться sed через него тоже.

4

Вы можете просто импортировать

 mysqlimport --ignore-lines=1 --lines-terminated-by='\n' --fields-terminated-by=',' --fields-enclosed-by='" ' --verbose --local -uroot -proot имя_базы_данных csv_import. csv
 

Примечание. Имя файла CSV и имя таблицы должны совпадать.

Для импорта CSV со строкой заголовка с помощью mysqlimport просто добавьте

 --ignore-lines=N
 

(игнорирует первые N строк файла данных)

Этот вариант описан на странице, на которую вы ссылаетесь.

2

Другой вариант — использовать команду csvsql из библиотеки csvkit.

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

 csvsql --db mysql:///test --tables yourtable --insert yourfile.csv
 

Это может быть выполнено непосредственно в командной строке или встроено в сценарий Python или оболочки для автоматизации, если вам нужно сделать это для нескольких файлов.

csvsql позволяет создавать таблицы базы данных «на лету» на основе структуры вашего CSV, поэтому это упрощенный способ получить первую строку вашего CSV для автоматического преобразования в качестве заголовка таблицы MySQL.

Полная документация и дополнительные примеры здесь: https://csvkit.

readthedocs.io/en/1.0.3/scripts/csvsql.html

Я знаю, что это говорит о командной строке, но просто лакомый кусочек чего-то быстрого, что может сработать, если у вас есть рабочая среда MySQL и csv не слишком большой, вы можете просто

  • ВЫБРАТЬ * ИЗ таблицы
  • Копировать весь CSV
  • Вставьте csv в раздел результатов запроса Workbench
  • Надежда на лучшее

Я надеюсь на лучшее, потому что это MySQL Workbench. Вы никогда не знаете, когда он взорвется


Если вы хотите сделать это на удаленном сервере, вы должны сделать

 mysql -h
-u -p --local-infile bark -e «ЗАГРУЗИТЬ ЛОКАЛЬНЫЙ ИНФАЙЛ ДАННЫХ '' В ТАБЛИЦУ ПОЛЯ, ЗАКРЫВАЕМЫЕ ',' СТРОКИ, ЗАКРЫВАЕМЫЕ '\n'"

Обратите внимание, я не ставил пароль после -p , так как ввод пароля в командной строке считается плохой практикой

В большинстве ответов отсутствует важный момент, например, если вы создали файл csv , экспортированный из Microsoft Excel в Windows и импортируя то же самое в среду Linux, вы получите неожиданный результат.

правильный синтаксис:

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

здесь разница '\r\n' по сравнению с просто '\n

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

Как импортировать CSV-файл в рабочую среду MySQL?

Задавать вопрос

спросил

10 лет, 11 месяцев назад

Изменено 9 месяцев назад

Просмотрено 275 тысяч раз

У меня есть CSV-файл. Он содержит 1,4 миллиона строк данных, поэтому я не могу открыть этот CSV-файл в Excel, поскольку его ограничение составляет около 1 миллиона строк.

Поэтому я хочу импортировать этот файл в рабочую среду MySQL. Этот CSV-файл содержит такие столбцы, как

 «Код зоны обслуживания», «Номера телефонов», «Предпочтения», «Тип оператора», «Тип телефона».
 

Я пытаюсь создать в рабочей среде MySQL таблицу с именем «dummy», содержащую такие столбцы, как

 ServiceAreaCodes, PhoneNumbers, Preferences, Opstyp, PhoneTyp. 
 

Имя файла CSV model.csv . Мой код в workbench выглядит следующим образом:

 ЛОКАЛЬНЫЙ ИНФАЙЛ ЗАГРУЗКИ ДАННЫХ 'model.csv' В ТАБЛИЦУ test.dummy ПОЛЯ, ЗАВЕРШЕННЫЕ ',' строками, оканчивающимися '\n';
 

, но я получаю сообщение об ошибке типа model.CSV file not found

  • mysql
  • csv
  • import
1

Я думаю, вам не хватает пункта ENCLOSED BY

 ЗАГРУЗИТЬ ЛОКАЛЬНЫЙ ИНФАЙЛ ДАННЫХ '/path/to/your/csv/file/model.csv'
INTO TABLE test.dummy ПОЛЯ, ЗАВЕРШАЕМЫЕ ','
ЗАКРЫТЫ '"' ЛИНИИ, ЗАВЕРШЕННЫЕ '\n';
 

И укажите полный путь к CSV-файлу

Загрузить файл данных — документация MySQL

8

Если у вас меньший набор данных, способ получить его с помощью графического интерфейса:

  1. Открыть окно запроса
  2. ВЫБЕРИТЕ * ИЗ [имя_таблицы]
  3. Выберите «Импорт» в строке меню
  4. Нажмите «Применить» в правом нижнем углу под таблицей результатов

Артикул: http://www. youtube.com/watch?v=tnhJa_zYNVY

14

В навигаторе в разделе СХЕМЫ щелкните правой кнопкой мыши схему/базу данных и выберите «Мастер импорта табличных данных».

Работает и для Mac.

2

Вы можете использовать мастер импорта данных таблицы MySQL

2

В настоящее время невозможно импортировать CSV (используя MySQL Workbench) на всех платформах, а также не рекомендуется, если указанный файл не находится на том же хосте, что и хост сервера MySQL.

Однако вы можете использовать mysqlimport.

Пример:

 mysqlimport --local --compress --user=имя пользователя --пароль --host=имя хоста \
--fields-terminated-by=',' Acme sales.part_*
 

В этом примере mysqlimport

указано загрузить все файлы с именем «продажи» с расширением, начинающимся с «part_». Это удобный способ загрузить все файлы, созданные в примере «split». Используйте параметр —compress для минимизации сетевого трафика.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *