Bazaprogram.ru

Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Импорт excel в mysql

Из Excel в MySQL. Небольшая функция на PHP (fixed)

Введение

Бывает так, что вам нужно импортировать файл Excel в базу MySQL, но готового решения нигде нет. Вот и я, когда меня попросил друг поискать легкий способ импорта, сперва решил загуглить поискать решение. Увы, запрос php excel to mysql не дал ничего конкретного, или же описанные способы были довольно таки не удобны. Тогда же я решил найти библиотеку для работы с Excel на PHP, и мне попалась PHPExcel. Но опять же меня ждало разочарование, запрос phpexcel to mysql не дал ничего путного (я ленивый пользователь и дальше 1й страницы не хожу). В итоге я решил создать свой велосипед скрипт, которым и хочу поделиться с вами.

Начало

Итак, библиотеку я нашел, скачал и начал разбираться. Для начала нужно было подключить библиотеку и создать подключение к базе, что совсем не сложно:

Далее нужно открыть файл Excel для чтения:

После открытия файла, нам нужно перебрать все листы в нем и каждый добавить в базу MySQL (можно и 1 конкретный, но об этом позже):

Ну а теперь самое интересное…

Перебор и добавление

Мы будем исходить из того, что таблицы у нас нет (или есть, но с другими данными) и ее нужно создать. Для этого нам нужно получить имена для столбцов (в соответствии с просьбой друга, имена могут находиться в 1 строчке таблицы):

Далее удаляем таблицу из базы, если она существовала, и создаем новую:

Как видно из кода, значения будут иметь тип TEXT. Теперь приступаем собственно к перебору ячеек и добавления их в базу. Конечно, такой алгоритм не сложно найти на просторах Stack Overflow, однако было замечено, что происходить ошибка при попытки чтения объединенных ячеек (точнее несоответствие количества столбцов и значений в запросе). Это я и решил учесть:

Все дело в функцию!

Заключение

Что ж, надеюсь данная статья поможет вам. Ну, или, если вы захотите изобрести свой велосипед, но только с моторчиком написать свой скрипт, эта статья поможет вам начать.

Это моя первая, и думаю, не последняя статья. Поэтому жду ваших советов и поправок, как тут принято, в комментариях.

Update

Вижу, все-таки, мне удалось создать небольшую дискуссию, но не все понимают, почему было сделано именно так. Постараюсь объяснить.

Во-первых: с этим должен был работать пожилой человек, которому будет трудновато объяснить как сохранить файл в CSV, при этом не потеряв данные (а такое исключать нельзя, к тому же у них свой формат на файл XLS, который приходит сверху) и, тем более, как это импортировать через phpMyAdmin (который, кстати, с версии 3.4.5 не поддерживает XLS/XLSX, советую посмотреть почему) или подобное. Так что это не подходит.

Во-вторых: все это должно быть расположено на хостинге, и установка модулей как на сервер, так и для локальных программ не подходит (к тому же там Linux, а не Windows, как некоторые подумали).

В-третьих: это дело проводится раз в полгода, однако от безделья я решил написать такую функцию, способную обобщить импорт (вдруг кому нужно).

Читать еще:  Параметры вставки word 2003

Теперь о хорошем: переписал данную функцию в класс, исправил кое-что и добавил возможность экспорта из MySQL в Excel. Забрать можно отсюда.

Извините, что не ответил в комментариях, решил что в самой статье будет уместние.

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

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

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

10 ответов:

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

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

поля заканчиваются на ‘t’, заключенные в » Escape BY ‘ ‘

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

есть простой онлайн-инструмент, который может сделать это под названием sqlizer.io.

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

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

Excel2MySQL или программа коммунальные услуги. Полное раскрытие информации, я являюсь автором Excel2MySQL. Эти 2 утилиты не являются бесплатными, но они являются самым простым вариантом и имеют наименьшее количество ограничений. Они также включают в себя дополнительные функции, чтобы помочь с импортом данных Excel в MySQL. Например, Excel2MySQL автоматически создает таблицу и автоматически оптимизирует типы данных полей, такие как даты, время, поплавки и т. д. Если вы торопитесь или не можете получить другие варианты для работы с вашими данными, то эти утилиты могут удовлетворить ваши потребности.

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

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

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

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

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

вставить в Г-Н Конвертер Данных и выберите выход MySQL:

Читать еще:  Горячие клавиши word

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

если вы используете MySQL Workbench или уже вошли в mysql из командной строки, то вы можете выполнить сгенерированные инструкции SQL из Шага 3 непосредственно. В противном случае, вставьте код в текстовый файл (например, import.sql ) и выполните эту команды из оболочки Unix:

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

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

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

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

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

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

«опубликовано Майк Лэрд 13 октября 2010 12: 50am»

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

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

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

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

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

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

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

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

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

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

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

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

Читать еще:  Гипертекст в документе ms word это


Мы используем оператор 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 .

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

Данная публикация представляет собой перевод статьи « Import CSV File Into MySQL Table » , подготовленной дружной командой проекта Интернет-технологии.ру

Ссылка на основную публикацию
Adblock
detector