今天遇到的难题是excel2mysql,以前遇到类似的问题的时候都是手工操作,利用ctrl+c和ctrl+v来解决问题,然而今天遇到的4个excel都是几十兆的文件,其中包含有5、6万条数据、数十个列,这再依靠Windows的剪贴板显然有些吃力了。
想到的第一个解决途径是依靠搜索引擎查找excel2mysql,找到了几个开源的代码、还有一个收费的软件。开源代码down下来测试了一下,发现均有问题,无法顺利跑通,而收费软件我根本不考虑。最终在调试开源和自己开发二者间进行了一下权衡,最终敲定用后者来完成任务。
IBM的开发社区提供了一篇有价值的文章:《功能丰富的 Perl: 用 Perl 读写 Excel 文件》
按照文章所述,有两种途径可以让Perl操作excel文件,一种是使用Win32::OLE模组、另一种途径是使用Spreadsheet::ParseExcel模组,经测试,后者在我的电脑商运行正常,而前者似乎还缺少某些具有继承关系的基础模组。
至此,已经有了Perl操作Excel的基本代码库,剩下的工作就是写一个简单的代码将手中的四个excel导出并写入mysql了。
因为excel是一个相对简单的表管理程序,并不具备太多的变量类型,而同时手中的excel文件也是由文案工作者录入的,没有遵循良好的统一规范,所以我在进行导入操作的时候,mysql中创建的临时表也没有进行太多的规划,全部使用文本字段,只等数据全部进入mysql之后、再行整理。
想到的第一个解决途径是依靠搜索引擎查找excel2mysql,找到了几个开源的代码、还有一个收费的软件。开源代码down下来测试了一下,发现均有问题,无法顺利跑通,而收费软件我根本不考虑。最终在调试开源和自己开发二者间进行了一下权衡,最终敲定用后者来完成任务。
IBM的开发社区提供了一篇有价值的文章:《功能丰富的 Perl: 用 Perl 读写 Excel 文件》
按照文章所述,有两种途径可以让Perl操作excel文件,一种是使用Win32::OLE模组、另一种途径是使用Spreadsheet::ParseExcel模组,经测试,后者在我的电脑商运行正常,而前者似乎还缺少某些具有继承关系的基础模组。
至此,已经有了Perl操作Excel的基本代码库,剩下的工作就是写一个简单的代码将手中的四个excel导出并写入mysql了。
因为excel是一个相对简单的表管理程序,并不具备太多的变量类型,而同时手中的excel文件也是由文案工作者录入的,没有遵循良好的统一规范,所以我在进行导入操作的时候,mysql中创建的临时表也没有进行太多的规划,全部使用文本字段,只等数据全部进入mysql之后、再行整理。
Leave a comment