我使用PHP 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 :(得分:1)
似乎你可以尝试使用: 1. PHP-EXCEL-READER(http://code.google.com/p/php-excel-reader/) 2. PHPExcel(https://phpexcel.codeplex.com/)
答案 1 :(得分:0)
如果没有第三方专有产品,您将需要直接从Excel导入到MySQL,您需要购买 - dbForge Studio或其他东西(我没有尝试过这个,所以我甚至不推荐它)。名为phpmyadmin的工具曾经有过这个功能,但是从版本3.4.5开始就折旧了,所以如果你安装一个旧版本,它可能是你的选择。这实际上取决于几个因素。
对于一般的开始,当然,您应该确保要导入的文件具有与要将其导入的数据库相同的列和列顺序。
如果您将xls文件转换或导出为CSV(它是一个单独的故事,如何做到这一点,我将不会在这里介绍,有大量资源或在线转换器),您可以在Excel中合并所有这些,或从您的控制台。在所有现代操作系统上,您只需将所有文件放在同一目录中,cd或dir,然后运行&#34; cat * .csv&gt; merged.csv&#34;这会将所有文件合并为一个。 (在Windows机器上复制/ b * .csv merged.csv)
一旦你有一个合并的文件,你可以运行php来执行mysql导入 - &#34; LOAD DATA INFILE&#39; c:/path/to/file/merged.csv' INTO TABLE tablename&#34; (更多关于它 - http://dev.mysql.com/doc/refman/5.1/en/load-data.html)
当然,您也可以使用像PHPExcel这样的PHP库自动导出XLS到CSV - https://phpexcel.codeplex.com/
答案 2 :(得分:0)
正如Cninroh所说,你需要一种专利产品。我建议我写的一个名为Excel2MySQL的产品。它具有用于手动导入的简单用户界面,还包括用于自动上载的command line interface,并且可以直接读取任何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