将100个Excel文件传输到MySQL

我使用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? ant想法?

如果没有第三方专有产品,直接从Excel导入到MySQL将是不可能的,你需要购买像 – dbForge工作室或什么(我没有尝试过这个,所以我甚至不能推荐它)。 名为phpmyadmin的工具曾经有过这样的function,但是从3.4.5版本开始折旧,所以如果你安装了一个旧的,它可能是你的一个select。 这真的取决于几个因素。

对于一般的开始,当然,你应该确保你想要导入的文件有相同的列,列顺序和你想要导入的数据库一样。

如果你转换,或导出你的xls文件到CSV(它是一个单独的故事,关于如何做到这一点,我不会在这里覆盖,大量的资源或在线转换器),你可以合并所有这些在Excel中,或从你的控制台。 在所有现代的操作系统上,你可以把所有的文件放在同一个目录下,cd或者dir,然后运行“cat * .csv> merged.csv”,它将把所有的文件合并成一个文件。 (在Windows机器上复制/ b * .csv merged.csv)

一旦你有一个合并的文件,你可以运行php来执行mysql的导入 – “LOAD DATA INFILE”c:/path/to/file/merged.csv'INTO TABLE tablename“(更多关于这里 – http:// dev .mysql.com / doc / refman / 5.1 / en / load-data.html )

当然你也可以通过使用像PHPExcel这样的PHP库自动将XLS导出为CSV格式 – https://phpexcel.codeplex.com/

似乎您可以尝试使用:1. PHP-EXCEL-READER( http://code.google.com/p/php-excel-reader/ )2. PHPExcel( https://phpexcel.codeplex.com/

正如Cninroh所说,你需要一个专有产品。 我build议我写一个叫做Excel2MySQL的产品。 它有一个简单的手动导入用户界面,它还包括一个用于自动上传的命令行界面 ,可以直接读取任何Excel文件。 不需要导出为csv文件。 Excel工作表名称定义目标MySQL表名。 该表可以自动创build或简单地附加到。 所有字段也可以自动优化到适当的MySQLtypes。 该程序是免费试用,所以你可以validation它是否会为你工作。

 -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