首页 新闻 会员 周边 捐助

excel 批量导入sql表中的一列字段

0
悬赏园豆:10 [已解决问题] 解决于 2013-09-27 11:47

因为项目需求的扩大,现在想要在原先表Employee中新增一个字段,

InitialSeniorit  ,int型

 现在excel表里有大量数据,

AgentId InitialSeniority

 我如何高性能的批量导入excel数据,在网上查了很久,就这一个方法,难道我要循环导入?

                update tablename  set columnname=
        (select *  from
        OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
        ,'Excel 5.0;HDR=YES;DATABASE=文件存放路径+表名',sheet1$)) where ...
 

望大侠们多多帮助,小生不胜感激。

土星的山羊的主页 土星的山羊 | 初学一级 | 园豆:191
提问于:2013-09-23 17:03
< >
分享
最佳答案
0

可以新建一张临时表tb_tmp,存入主键和新增列的数据。再用下面的语句用主键关联update下就可以。

update tablename a set a.columnname=(select b.columnname from tb_tmp b where b.id=a.id) ;

收获园豆:10
酱油兴爷 | 菜鸟二级 |园豆:212 | 2013-09-23 17:36
其他回答(3)
0

如果只是基础数据,那么直接先用导入想到,导入到数据库的一个表,然后用update table set col=t1.col from t1 where t1.id=table.id,这样的写法。

幻天芒 | 园豆:37207 (高人七级) | 2013-09-23 17:54
0

像你这种情况强烈推荐使用kettle!!!

allon6318 | 园豆:858 (小虾三级) | 2013-09-25 17:33
0

感谢以上的回复,问题以解决。补充一下,前两位是需要新增临时表的,然后再update,然后再删除表。这样涉及到用户直接对数据库的操作。可以table.selet(string.foramt("ID={0}",othertablerow["ID"])).First();

这样的好处就是直接操作内存数据库,然后adpter统一更新。

土星的山羊 | 园豆:191 (初学一级) | 2013-09-27 11:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册