Ввод данных из таблицы Excel в базу данных? - PullRequest
3 голосов
/ 11 октября 2011

Я ищу умный способ извлечь 500 с лишним строк данных из таблицы Excel и ввести их в мою базу данных.

Таблица выглядит как this

Моя таблица 'tbl_foot_teams' установлена ​​как

id |имя |rating

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

Есть ли эффективный способ добиться этого?По отдельности, это займет у меня нелепое количество времени!

Спасибо

Ответы [ 6 ]

2 голосов
/ 11 октября 2011

Сохраните файл Excel в формате CSV и используйте команду LOAD DATA INFILE для импорта данных.

В вашем файле Excel нет поля id.Сделайте поле id в таблице как AUTO_INCREMENT, и используйте команду, подобную этой -

LOAD DATA INFILE 'file_name.csv' INTO TABLE tbl_foot_teams
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
-- IGNORE 1 LINES -- if csv file has column headers
(name, rating)
SET id = NULL; -- this will set unique value for each row

Также обратите внимание на GUI Инструмент импорта данных (формат Excel или CSV) в dbForge Studio for MySQL .

0 голосов
/ 11 октября 2011

Работая со стороны Excel, вы можете использовать ADO, например Excel VBA: запись в базу данных mysql

Dim cn As ADODB.Connection

''Not the best way to get the name, just convenient for notes
strFile = Workbooks(1).FullName
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
    & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"

Set cn = CreateObject("ADODB.Connection")

''For this to work, you must create a DSN and use the name in place of 
''DSNName, however, you can also use the full connection string
strSQL = "INSERT INTO [ODBC;DSN=DSNName;].NameOfMySQLTable " _
& "Select AnyField As NameOfMySQLField FROM [Sheet1$];"

cn.Execute strSQL
0 голосов
/ 11 октября 2011

После преобразования в файл CSV вы можете импортировать в любую базу данных, которая поддерживает импорт из файлов CSV (MySQL, PostgreSQL и т. Д.), Но вам придется сделать это из командной строки:

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

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

Если у вас установлена ​​ phpMyAdmin на сервере, вы можете использовать опцию Импортировать из CSV , хотя сначала вам придется заново сохранить электронную таблицу Excel как CSV ( Файл значений, разделенных запятыми).

0 голосов
/ 11 октября 2011

Вы не указываете, какую базу данных вы используете, но простой способ сделать это с MySQL - это экспортировать электронную таблицу в виде файла csv, а затем импортировать в MySQL с помощью mysqlimport.

Это описано в комментарии к этой странице MySQL , от пользователя Philippe Jausions:

Если вы один из многих, кто пытается импортировать CSVфайл в MySQL с помощью mysqlimport в командной строке MS-Windows / DOS, попробуйте следующее:

mysqlimport --fields-optionally-enclosed-by=""" --fields-terminated-by=, --lines-terminated-by="\r\n" --user=YOUR_USERNAME --password YOUR_DATABASE YOUR_TABLE.csv

между кавычками "и обратной косой чертой \ это может действительно затруднить поиск подходящей комбинации в Windows ...

Обычно я запускаю эту команду из папки, содержащей файл YOUR_TABLE.csv.

Если в вашем файле .csv есть заголовок с именем столбцов или другого «мусора»,просто добавьте --ignore-lines = X, чтобы пропустить первые X строк (т.е. --ignore-lines = 1, чтобы пропустить 1 строку)

Если ваши поля (необязательно) заключены в двойные кавычки "икоторые сами удваиваются внутри значения (т. е. двойная двойная кавычка "" = 1 двойная кавычка "), затем также используют --fields-escaped-by = \ (по умолчанию) и НЕ --fields-escaped-by =" ""

0 голосов
/ 11 октября 2011

Если мы говорим о 50 строках, вы можете легко создать новый столбец в электронной таблице с формулой для объединения ваших значений с оператором вставки.Примерно так:

= concat ("вставить в tbl_foot_teams (name, rating) значения (", $ b8, "...

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

0 голосов
/ 11 октября 2011

В phpmyadmin у вас есть опция импорта из Excel.
Если у вас его нет, возможно, у вас есть Импорт из CSV, поэтому просто конвертируйте электронную таблицу в CSV.
Если у вас нет ничего из вышеперечисленного, вы можете написать функцию php, которая открывает текстовый файл, делает разнесение по строкам, а затем разбирает по значениям

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...