Передача 100 файлов Excel в MySQL

Я использую расширение dbase для чтения файлов dbase и загрузки их в MySQP.

Мой код:

 if(dbase_open($FileDir,0)){

$dbOpen = dbase_open($FileDir,0);
$records = dbase_numrecords($dbOpen);

$qry = "";
$qry = "INSERT INTO ".$Table." (`SCADA`, `Date`, `PlantNo`, `State`, `SubState`, `Frequency`) VALUES ";

for ($i=1; $i<=$records; $i++){

$rows = dbase_get_record_with_names($dbOpen,$i);
$qry .= '('.$SCADA.','.$rows['Date'].','.$rows['PlantNo'].','.$rows['State'].','.$rows['SubState'].','.$rows['Frequency'].'),';

}

$qry = substr($qry, 0, -1);
$Insert = $conn -> prepare($qry);
$Insert -> execute();

Теперь я должен сделать то же самое, но с файлами xls! Я знаю, что могу конвертировать их в csv и импортировать их через PHP, но у меня есть 100 файлов xls … Как я могу перенести их в MySQL? Идея муравья?

0

Решение

Прямой импорт из Excel в MySQL будет невозможен без стороннего проприетарного продукта, который вам нужно будет купить, например, — dbForge Studio или что-то подобное (я не пробовал этот, так что даже не могу его порекомендовать). Инструмент под названием phpmyadmin раньше имел эту функциональность, но его версия устарела с версии 3.4.5, поэтому, если вы устанавливаете старую версию, она может подойти вам. Это действительно зависит от нескольких факторов.

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

Если вы конвертируете или экспортируете свои файлы xls в CSV (это отдельная история о том, как это сделать, и я не буду здесь рассказывать, множество ресурсов или онлайн-конвертеров там), вы можете объединить их все в Excel или из твоя консоль Во всех современных операционных системах вы можете просто поместить все файлы в один и тот же каталог, cd или dir, и запустить «cat * .csv> merged.csv», который объединит все файлы в один. (copy / b * .csv merged.csv на компьютерах с Windows)

Если у вас есть один объединенный файл, вы можете запустить php для выполнения импорта mysql —
«ЗАГРУЗИТЬ ДАННЫЙ ИНФИЛЬ» c: /path/to/file/merged.csv ‘INTO TABLE tablename »(подробнее об этом здесь — http://dev.mysql.com/doc/refman/5.1/en/load-data.html)

Конечно, вы также можете автоматизировать экспорт XLS в CSV с помощью библиотеки php, такой как PHPExcel — https://phpexcel.codeplex.com/

0

Другие решения

Кажется, вы можете попробовать использовать:
1. PHP-EXCEL-READER (http://code.google.com/p/php-excel-reader/)
2. PHPExcel (https://phpexcel.codeplex.com/)

1

Как предполагает Cninroh, вам понадобится патентованный продукт. Я предлагаю продукт, который я написал, называется Excel2MySQL. Он имеет простой пользовательский интерфейс для импорта вручную, а также включает в себя Интерфейс командной строки для автоматизации загрузки и может читать любой файл Excel напрямую. Нет необходимости экспортировать как CSV-файл. Имена листов Excel определяют имя таблицы назначения MySQL. Таблица может быть автоматически создана или просто добавлена. Все поля также могут быть автоматически оптимизированы для соответствующего типа MySQL. Программа бесплатна, поэтому вы можете проверить, будет ли она работать на вас.

-h, --help, display help message and exit
-f file, Excel file to convert (include full path) (REQUIRED)
-s sheet, Excel sheet to convert (omit to convert all)
-z host, mysql server hostname or IP address (omit will default to localhost)
-d database, mysql database name (REQUIRED)
-u user, mysql user name (REQUIRED)
-p password, mysql password
-x port, mysql port number (omit will default to 3306)
-r, replace existing table (omit to append to existing table)
-n, first row is not a header (omit to indicate first row contains header)
-a, allow spaces in table & field names (omit to change spaces to underscores)
-m, use myisam database storage engine (omit to use innodb)
-k, keep blank rows & columns (omit to remove)
-c, Unmerge merged cells
-v, define all fields as varchar type on tables (omit to optimize field types)

Вот пример командной строки для загрузки файла Excel и всех его листов в таблицы:

excel2mysqlCLI.exe -f "c:\my excel.xls" -d mydb -u myid -p mypass
0
По вопросам рекламы [email protected]