因为项目需求的扩大,现在想要在原先表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 ...
望大侠们多多帮助,小生不胜感激。
可以新建一张临时表tb_tmp,存入主键和新增列的数据。再用下面的语句用主键关联update下就可以。
update tablename a set a.columnname=(select b.columnname from tb_tmp b where b.id=a.id) ;
如果只是基础数据,那么直接先用导入想到,导入到数据库的一个表,然后用update table set col=t1.col from t1 where t1.id=table.id,这样的写法。
像你这种情况强烈推荐使用kettle!!!
感谢以上的回复,问题以解决。补充一下,前两位是需要新增临时表的,然后再update,然后再删除表。这样涉及到用户直接对数据库的操作。可以table.selet(string.foramt("ID={0}",othertablerow["ID"])).First();
这样的好处就是直接操作内存数据库,然后adpter统一更新。