Как импортировать файл Excel в базу данных MySQL

88

Может ли кто-нибудь объяснить, как импортировать файл Microsoft Excel в базу данных MySQL?

Например, моя таблица Excel выглядит так:

Country   |   Amount   |   Qty
----------------------------------
America   |   93       |   0.60

Greece    |   9377     |   0.80

Australia |   9375     |   0.80
Феро
источник
[Вы можете посмотреть эту ветку] [1] на форумах MySQL. Он объясняет, как делать именно то, что вы хотите. [1]: forums.mysql.com/read.php?32,216343,216344#msg-216344
Kredns,
1
Эта бесплатная утилита позволяет быстро и легко импортировать таблицы Excel в таблицы mysql. Panofish.net/…
panofish
+1 за новую и отличную идею. Обработка безумно медленная, сначала она считывает каждую строку в файле, а затем загружает что-нибудь. Импорт 5.2K строк занял около 15 минут
Fr0zenFyr
Для некоторых таблиц это может быть медленным из-за количества столбцов и строк. Но я виню библиотеку com-объектов MicroSoft, которая используется для чтения электронных таблиц. Моя программа читает электронную таблицу настолько быстро, насколько позволяет библиотека. Вставки mysql очень быстрые. Если вы можете удалить ненужные столбцы перед импортом ... это может помочь.
panofish
У меня было 14 столбцов на 5173 строках. Я уже выбрал все пустые столбцы / строки и удалил их, чтобы избежать ненужной обработки. Sytem, ​​который я использовал, имел 2,5 ГБ ОЗУ и процессор core2duo, не было запущено много процессов, на вкладке производительности было показано 65% использования и много ОЗУ все еще не использовалось. Так что, я думаю, я бы не стал винить оборудование, но, как вы сказали, объекты MS com - отстой ... Я не знаю, когда MS перестанет создавать дерьмо, похожее на спасателей для новичков. Я устал делать лишнюю ерунду для продуктов от РС.
Fr0zenFyr

Ответы:

46
  1. Экспортируйте его в какой-нибудь текстовый формат. Самым простым, вероятно, будет версия с разделителями табуляции, но CSV также может работать.

  2. Используйте возможность загрузки данных. См. Http://dev.mysql.com/doc/refman/5.1/en/load-data.html

  3. Посмотрите на половину страницы, так как это дает хороший пример данных, разделенных табуляцией:

    ПОЛЯ, ЗАКАНЧИВАЕМЫЕ '\ t' ЗАКРЫТО '' ЗАКРЫТО ''

  4. Проверьте свои данные. Иногда при цитировании или экранировании возникают проблемы, и вам нужно настроить исходный код, команду импорта или просто выполнить пост-обработку через SQL.

ндп
источник
2
При экспорте в CSV [по крайней мере] excel 2013 активно пытается отравить данные, используя двойные кавычки с экранированием VBA, используя зависящий от языкового стандарта (на основе региональных настроек ОС) десятичный разделитель для значений 0 (например, ',', при использовании 'как определено в разделителе свойств ячейки для всех остальных значений. Лучше держаться подальше от CSV.
afk5min,
1
Обратите внимание, что эта процедура требует, чтобы вы сначала создали таблицу с соответствующими полями.
LarsH,
Это не единственная проблема. Я не уверен, правильно ли эта процедура работает с возвратом каретки внутри ячейки в Excel. Даже импорт из CSV в Excel терпит неудачу в этом
Рауль Луна
1
@ afk5min что вы имеете в виду под "отравленными данными" ??? Все эти теги и разметка очень полезны для пользователей, которые явно собираются импортировать их в другой продукт MS ...
Миндвин,
1
* Вы имели в виду «Самый трудный путь», а не самый простой
Revious 08
102

Для этого есть простой онлайн-инструмент sqlizer.io .

Скриншот с сайта sqlizer.com

Вы загружаете в него файл XLSX, вводите имя листа и диапазон ячеек, и он генерирует оператор CREATE TABLE и набор операторов INSERT для импорта всех ваших данных в базу данных MySQL.

(Отказ от ответственности: я помогаю запускать SQLizer)

d4nt
источник
22
Хорошо знать, что этот инструмент существует, но определенно подумайте, стоит ли вам его использовать. Если ваша электронная таблица содержит конфиденциальные данные (например, электронные письма пользователей, пароли, информацию о копии, медицинскую информацию и т. Д.), Это может быть не самой лучшей идеей. Этот сайт может не хранить ваши данные и быть безопасным, но вы не можете знать это наверняка.
Крис Шмитц
1
@DivyeshJesadiya Это бесплатно для всего до 5000 строк. После этого вы должны заплатить 10 долларов за месяц использования.
d4nt
@doxsi мне кажется нормально, какая у вас с ним проблема?
d4nt
@ChrisSchmitz, мы очень осторожны с безопасностью и недавно написали в блоге сообщение о том, как мы работаем с SQLizer. Blog.sqlizer.io/posts/privacy-at-sqlizer
a_good_swan
Это работает, обратите внимание на формат Excel, xlt не принимается, а xls принимается.
Эмануэль Пировано
40

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

  1. Выберите соответствующие ячейки:

    введите описание изображения здесь

  2. Вставьте в Mr. Data Converter и выберите результат как MySQL:

    введите описание изображения здесь

  3. Измените имя таблицы и определения столбцов в соответствии с вашими требованиями в сгенерированном выводе:

CREATE TABLE sales (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  Country VARCHAR(255),
  Amount INT,
  Qty FLOAT
);
INSERT INTO sales
  (Country,Amount,Qty)
VALUES
  ('America',93,0.60),
  ('Greece',9377,0.80),
  ('Australia',9375,0.80);
  1. Если вы используете MySQL Workbench или уже вошли в систему mysqlиз командной строки, вы можете напрямую выполнять сгенерированные операторы SQL из шага 3. В противном случае вставьте код в текстовый файл (например, import.sql) и выполните эту команду из оболочки Unix:

    mysql mydatabase < import.sql

    Другие способы импорта из файла SQL можно найти в этом ответе на переполнение стека .

thdoan
источник
1
Это был самый простой способ. Благодарность! Просто не забудьте удалить лишний «ID» первичного ключа в SQL и указать значение AUTO по вашему выбору.
Fandango68
29

На самом деле существует несколько способов импортировать файл Excel в базу данных MySQL с разной степенью сложности и успеха.

  1. Excel2MySQL . Несомненно, самый простой и быстрый способ импортировать данные Excel в MySQL. Он поддерживает все версии Excel и не требует установки Office.

    скриншот Excel2MySQL

  2. ЗАГРУЗИТЬ ДАННЫЕ INFILE : этот популярный вариант, пожалуй, самый технический и требует некоторого понимания выполнения команд MySQL. Вы должны вручную создать свою таблицу перед загрузкой и использовать типы полей VARCHAR подходящего размера. Следовательно, типы данных вашего поля не оптимизированы. ЗАГРУЗИТЬ ДАННЫЕ INFILE не может импортировать большие файлы, размер которых превышает «max_allowed_packet». Особое внимание требуется, чтобы избежать проблем с импортом специальных символов и иностранных символов Unicode. Вот недавний пример, который я использовал для импорта CSV-файла с именем test.csv.

    введите описание изображения здесь

  3. phpMyAdmin : сначала выберите свою базу данных, затем выберите вкладку Импорт. phpMyAdmin автоматически создаст вашу таблицу и изменит размер ваших полей VARCHAR, но не оптимизирует типы полей. У phpMyAdmin возникают проблемы с импортом больших файлов, размер которых превышает max_allowed_packet.

    введите описание изображения здесь

  4. MySQL для Excel : это бесплатная надстройка Excel от Oracle. Этот вариант немного утомителен, потому что он использует мастер, а импорт выполняется медленно и содержит ошибки для больших файлов, но это может быть хорошим вариантом для небольших файлов с данными VARCHAR. Поля не оптимизированы.

    введите описание изображения здесь

паника
источник
Привет @panofish, у меня есть Excel, который обновляется ежедневно. Я хотел бы поместить только обновленные данные в таблицу базы данных mysql, а не всю таблицу. (т.е.) помещать в таблицу одну строку в день. Как это может быть сделано?
Arun Raja
Все эти решения ориентированы на загрузку всей электронной таблицы и замену таблицы MySQL или добавление к ней. Добавляют ли изменения новые записи или изменяют ли существующие записи?
panofish
Они просто перезаписывают значения. Но я хочу, чтобы добавлялись только те значения, которых еще нет в базе данных на основе даты. Это может повысить производительность, просто добавляя несколько строк вместо ежедневного добавления множества строк.
Арун Раджа
2
Инструмент Excel2MySQL должен иметь возможность создавать только скрипт базы данных :(
joseantgv
PHPMyAdmin был самым простым и быстрым.
Амир Хаджиха
2

Не уверен, что у вас есть все эти настройки, но для меня я использую PHP и MYSQL. Поэтому я использую PHP-класс PHPExcel. Это принимает файл практически в любом формате, xls, xlsx, cvs, ..., а затем позволяет вам читать и / или вставлять.

В итоге я загружаю Excel в объект phpexcel, а затем перебираю все строки. Исходя из того, что я хочу, я пишу простую команду вставки SQL, чтобы вставить данные из файла Excel в мою таблицу.

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

user1441213
источник
1

Лучший и самый простой способ - использовать приложение «MySQL for Excel», бесплатное приложение от Oracle. это приложение добавило плагин для Excel для экспорта и импорта данных в mysql. вы можете скачать это здесь

Садек Шаджары
источник
1

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

Теперь я использую Microsoft Access 2010, чтобы открыть свою таблицу MySql как связанную таблицу. Там я могу просто скопировать и вставить ячейки из Excel в Access.

Для этого сначала установите драйвер MySql ODBC и создайте соединение ODBC . Затем во вкладке «Внешние данные» откройте диалоговое окно «База данных ODBC» и сделайте ссылку на любую таблицу, используя соединение ODBC.

Используя MySql Workbench , вы также можете скопировать и вставить свои данные Excel в таблицу результатов MySql Workbench. Я дал подробные инструкции в этом ответе .

Кристоф Вайс
источник
0

Для пошагового примера импорта Excel 2007 в MySQL с правильной кодировкой (UTF-8) найдите этот комментарий:

"Автор: Майк Лэрд, 13 октября 2010 г., 12:50"

в следующем URL:

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

Рауль Морено
источник
0

Вы можете использовать DocChow , очень интуитивно понятный GIU для импорта Excel в MySQL, и он бесплатный на большинстве распространенных платформ (включая Linux).

В особенности, если вас беспокоят типы данных date, datetime, DocChow легко обрабатывает типы данных. Если вы работаете с несколькими таблицами Excel, которые хотите импортировать в одну таблицу MySQL, DocChow выполняет грязную работу.

Шондж1000
источник
0

Шаг 1 Создайте файл CSV

Шаг 2 войдите на свой сервер mysql

     mysql -uroot -pyourpassword 

Шаг 3 загрузите ваш CSV-файл

     load data local infile '//home/my-sys/my-excel.csv' into table my_tables fields terminated by ',' enclosed by '"' (Country, Amount,Qty);
Сайед Шибли
источник
0

Другой полезный инструмент, заменяющий внешний интерфейс MySQL, - это Toad для MySQL . К сожалению, Quest больше не поддерживается , но является прекрасной IDE для MySQL с мастерами IMPORT и EXPORT, обслуживающими большинство типов файлов.

Фанданго68
источник
0

Самый быстрый и простой способ - сохранить XLS как ODS (открытый лист документов) и импортировать его из PhpMyAdmin. введите описание изображения здесь

Дэниел Д.
источник