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


87

Чи може хтось пояснити, як імпортувати файл 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
Креднс,

1
Ця безкоштовна утиліта дозволяє швидко та легко імпортувати таблиці Excel у таблиці mysql panofish.net/…
panofish

+1 за нову та іншу ідею. Обробка шалено повільна, вона спочатку зчитує кожен рядок у файлі, а потім завантажує що-небудь. На імпорт 5.2K рядків пішло близько 15 хвилин
Пт0zenFyr

Для деяких електронних таблиць це може бути повільним через кількість стовпців і рядків. Але я звинувачую бібліотеку com-object microsofts, яка використовується для читання електронної таблиці. Моя програма читає таблицю так швидко, наскільки це дозволяє бібліотека. Вставки MySQL дуже швидкі. Якщо ви можете усунути непотрібні стовпці перед імпортом ... це може допомогти.
panofish

У мене було 14 стовпців на 5173 рядках. Я вже вибрав усі порожні стовпці / рядки та видалив їх, щоб уникнути непотрібної обробки. Система, якою я користувався, мала 2,5 Гб оперативної пам'яті та процесор core2duo, не було запущено багато процесів, вкладка продуктивності показувала 65% використання в цілому, а багато оперативної пам'яті все ще не використовувалося. Тож, мабуть, я б не звинувачував апаратне забезпечення, але, як ви сказали, об’єкти MS com відморожують .. Я не знаю, коли MS припинить створювати лайно, що виглядає як рятувальник життя для новачків. Мені нудно робити зайве лайно для продуктів MS.
Пт0zenFyr

Відповіді:


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 ...
Mindwin

1
* Ви мали на увазі "найважчий шлях" не найпростіший
Ревіс

102

Існує простий онлайн-інструмент, який може це зробити, який називається sqlizer.io .

Знімок екрана з sqlizer.com

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

(Застереження: я допомагаю запустити SQLizer)


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 можна знайти в цій відповіді на переповнення стека .


1
Це був найпростіший спосіб. Дякую! Просто пам’ятайте, що потрібно видалити зайвий «Ідентифікатор первинного ключа» в SQL та розмістити АВТО приріст за вашим вибором.
Fandango68

29

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

  1. Excel2MySQL . Руки вниз, найпростіший і найшвидший спосіб імпорту даних Excel у MySQL. Він підтримує всі версії Excel і не вимагає встановлення Office.

    скріншот екрана Excel2MySQL

  2. ЗАВАНТАЖИТИ ДАНИЙ ДАНИЙ : Цей популярний варіант, мабуть, найбільш технічний і вимагає певного розуміння виконання команди MySQL. Ви повинні вручну створити свою таблицю перед завантаженням і використовувати типи полів VARCHAR відповідного розміру. Таким чином, типи польових даних не оптимізовані. ЗАГРУЗИТИ ДАНІ ІНФАЙЛ має проблеми з імпортом великих файлів, розмір яких перевищує 'max_allowed_packet'. Особливої ​​уваги вимагає уникнення проблем із імпортом спеціальних символів та іноземних символів Unicode. Ось нещодавній приклад, який я використовував для імпорту csv-файлу з назвою test.csv.

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

  3. phpMyAdmin : Спочатку виберіть базу даних, а потім виберіть вкладку Імпорт. phpMyAdmin автоматично створить вашу таблицю та розмір полів VARCHAR, але не буде оптимізувати типи полів. phpMyAdmin має проблеми з імпортом великих файлів, розмір яких перевищує 'max_allowed_packet'.

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

  4. MySQL для Excel : це безкоштовна надбудова Excel від Oracle. Цей параметр трохи втомлює, оскільки в ньому використовується майстер, а імпорт відбувається повільно та з великими файлами, але це може бути хорошим варіантом для невеликих файлів із даними VARCHAR. Поля не оптимізовані.

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


Привіт @panofish, у мене є Excel, який оновлюється щодня. Я хотів би помістити лише оновлені дані, які будуть розміщені в таблиці бази даних mysql, а не в цілу таблицю. (тобто) поміщати по одному рядку в таблицю на день. Як це можна зробити?
Арун Раджа,

Всі ці рішення зосереджені на завантаженні цілої електронної таблиці та заміні таблиці MySQL або додаванні до таблиці. Зміни додають нові записи чи змінюють існуючі записи?
panofish

Вони просто переписують значення. Але я хочу, щоб були додані лише ті значення, які ще не присутні в базі даних на основі дати. Це може підвищити продуктивність, просто додаючи кілька рядків замість того, щоб додавати багато рядків щодня.
Арун Раджа,

2
Інструмент Excel2MySQL повинен мати можливість створювати лише сценарій бази даних :(
joseantgv

PHPMyAdmin був найпростішим і найшвидшим.
Амір Гаджиха,

2

Не впевнений, що у вас все це налаштування, але для мене я використовую PHP та MYSQL. Тому я використовую PHP-клас PHPExcel. Для цього потрібен файл майже у будь-якому форматі, xls, xlsx, cvs, ..., а потім дозволяє читати та / або вставляти.

Отже, те, що я закінчую, - це завантаження Excel у об’єкт phpexcel, а потім цикл по всіх рядках. Виходячи з того, що я хочу, я пишу просту команду вставки SQL, щоб вставити дані у файл Excel у свою таблицю.

На передньому кінці це невелика робота, але це лише питання доопрацювання деяких існуючих прикладів коду. Але коли ви набираєте його, внесення змін до імпорту є простим і швидким.


1

найкращий і найпростіший спосіб - скористатися програмою "MySQL для Excel", яка є безкоштовною програмою від oracle. цей додаток додав плагін для Excel для експорту та імпорту даних у mysql. Ви можете завантажити це звідси


1

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

Тепер я використовую Microsoft Access 2010, щоб відкрити таблицю MySql як пов'язану таблицю. Там я можу просто скопіювати та вставити комірки з Excel у Access.

Для цього спочатку встановіть драйвер MySql ODBC і створіть з’єднання ODBC . Потім у доступі на вкладці "Зовнішні дані" відкрийте діалогове вікно "База даних ODBC" і перейдіть до будь-якої таблиці за допомогою з'єднання ODBC.

За допомогою MySql Workbench ви також можете скопіювати та вставити дані Excel у сітку результатів MySql Workbench. У цій відповіді я дав детальні вказівки .



0

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

Особливо, якщо вас турбують типи даних, дата та час, DocChow легко обробляє типи даних. Якщо ви працюєте з кількома електронними таблицями Excel, які потрібно імпортувати в одну таблицю MySQL, DocChow виконує брудну роботу.


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 з майстрами ІМПОРТУ та ЕКСПОРТУ, яка забезпечує більшість типів файлів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.