把Excel工作表中数据导入数据库

把Excel工作表中数据导入数据库,第1张

这是第二次了,市场部那边又来要求改数据。他们要改的是数据库某张表中类似商品价格等的数据,需要改的地方又多,我们上次是靠新来的兄弟一个个给Update进去的,这次老大去教了他们Update语句,把烦人的皮球踢给他们了。但这样一个个更新很明显不是办法,我想通过excel直接把数据导入数据库应该是可行的吧,就开始找方法了。

我想至少有这样两种比较容易实现的方法:

1、直接用Sql语句查询

2、先用excle中的数据生成xml文件,再把xml导入数据库

第一种方法(方法二以后再试),找到联机丛书里实现此功能的Sql语句如下:

SELECT FROMOpenDataSource('MicrosoftJetOLEDB40', 'DataSource="c:Financeaccountxls";UserID=Admin;Password=;Extendedproperties=Excel50')…xactions

语句是有了,但我还是试了很久,因为各个参数具体该怎么设置它没有说。Data Source就是excel文件的路径,这个简单;UserId、Password和Extended properties这三个属性我改成了各种各样的与本机有关的用户名、密码以及excel版本都不对,最后用上面例子里的值“User ID=Admin;Password=;Extended properties=Excel 50”才成功了,晕啊;最后个“xactions”更是查了很多资料,其实就仅仅是excel文件里所选的工作表名而已,怪我对excel不够熟悉了,另外注意默认的Sheet1要写成[Sheet1$]

最后,看看我成功的测试

数据库里建好一个表testTable_1,有5个字段id, name, date, money, content,C盘下book1xls文件的sheet1工作表里写好对应的数据并设好数据类型,执行如下插入语句:

insertintotestTable_1([name],[date],[money],[content]) Select[姓名],[日期],[金额],[内容] FROMOpenDataSource('MicrosoftJetOLEDB40', 'DataSource="C:Book1xls"; UserID=Admin;Password=;Extendedproperties=Excel50')…[Sheet1$]

select里的列名我一开始用代替,但发现输出顺序与我预期的不同,是“金额、内容、日期、姓名”,不知道具体有什么规律,就老老实实写名字了。 *** 作成功

回过头来看看市场部的要求,假设在我这张表里实现,可以先判断如excel里存在与记录相同的name字段(name要唯一非空)时就删除记录,之后再插入,这样简单,但自增的id字段会因为插入而改变,那是不行的了。可行的方法是先读出excel里全部记录,然后用游标一条条分析,如果存在这个name就更新否则就插入。OK,下次就不用让他们再对着文档一条条Update了

1,在excel表每一行后加上=CONCATENATE("insert into table(字段1,字段2,字段n)values('",字段1坐标,"','",字段2坐标,"','",字段n坐标,"');")

2,将这一列复制到文本文档,以方便浏览和调试错误

3,使用运行sql的工具(我将他们都放到Navicat中创建查询 再运行就ok了) 4,浏览数据库,修改不合理的字段及值

你把下面的这段粘到excel 里面对应的位置

=CONCATENATE("insert into keywords(id,name,pwd)values('",坐标,"','",坐标,"','",坐标,"');")

按照你表格的排列对好,比如

最后把这一列复制到文本文档,你会看到全是sql的插入语句;

最后用Navicat之类的工具执行这些语句就Ok了。

php读取excel有现成的类,可以在网上下载到,但是真心不好用。如果文档复杂,建议还是将excel转换成csv格式,然后用php读取,php读取csv格式有现成的函数,php系统函数,其实不用系统函数也很简单,csv格式就相当于文本文件。随便怎么读都可以。再用分割符分离就好了。

导入到oracle就是单纯的数据库 *** 作了,连接oracle有现成的php函数,不过默认php环境是不支持的,需要修改phpini,配置成支持oracle就好了。

1、如果是导入excel表

可以先将excel另存为csv格式,上传文件,然后读取到文件的数据,一行一行读取,

id,name,age

1,mark,20

2,sam,21

读取数据要求跳过第一行,取得数据是1,mark,20,然后存放到数组格式为,array(1,'mark',20),

然后编写insert SQL语句循环导入即可!遇到乱码问题,可以先使用iconv("UTF-8","GBK",$data)转化编码格式,然后再insert到数据库。

2、如果是导入数据库文件(sql后缀)

先建立数据库,一般的编码都是采用utf8,编码随自己设定吧;

然后点击数据库进来,选上选项卡improve,接着界面就是打开文件,选好编码格式,就可以导入了。

以上就是关于把Excel工作表中数据导入数据库全部的内容,包括:把Excel工作表中数据导入数据库、php把excel导入到mysql数据库 的代码、如何将excel中的内容导入oracle数据库用php代码实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10199818.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存