现有表Order里面有1000W条数据
然后用导出功能导出了1W条数据
格式Excel如下
ID  Price   Payed
然后手工修改Payed支付状态
再导入更新数据库中的状态
----------------------------------------
方法1
ASP.NET代码(这里只写过程,因为是用NHibernate做,所以更新前要先取出数据,而且我这里也还要验证很多内容,所以一定得先取出对像,而不能直接写Update语句):
1:先将要导入的Excel上传,生成DataTable
2:循环这个DataTable,用Select * From Order where ID = ? and Price = ? 的方法取出记录
   如果没有找到,报错,找到进行更新
-----------------------------------------
方法2
1:先将要导入的Excel上传,生成DataTable
2:循环这个DataTable,生成SQL语句Select * From (Order where ID = ? and Price = ?) OR  (Order where ID = ? and Price = ?) OR ...一次查询出所有记录
3:如果记录和DataTable条数一样,则循环取出来的列表进行更新,不然的话,循环找出当前没有找到的数据并报错
-----------------------------------------大家会用什么方法来更新?
PS:不要用存储过程,因为是用NHibernate来更新,所以不可以直接写SQL语句
为什么不能直接写SQL语句,是因为我的Nhibernate更新的话会做操作日志和各种记录谢谢

解决方案 »

  1.   

    把改好的EXCEL导到数据库里,再关联更新。
      

  2.   

    直接外链表更新:
    update a set a.payed=b.payed from a left join (select * from OpenDataSource
    ('Microsoft.ACE.OLEDB.12.0', 
     'Data Source=e:\你的excel文件.xlsx;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1"')...sheet1$) b on a.id=b.id
      

  3.   


    不,懂;帮,顶;学,习;赚,分。
    虽然这么回贴可能会被删除。
    谁他妈的删除了就是个王八蛋。
    强烈抗议CSDN这种即当婊子又想立贞洁牌坊的恶劣行为!!!
    有本事,就封杀我!!!理由在这里:
    他妈的一帮管理员有神经病啊???
    http://topic.csdn.net/u/20110422/10/1a381057-7a7b-41d9-8969-ad1f5b77f24a.html?38665
    最好给出完整的表结构,测试数据,计算方法和正确结果.否则耽搁的是你宝贵的时间。
    如果有多表,表之间如何关联?
    如何更有效地在SQL Server论坛上提问
    http://topic.csdn.net/u/20100716/19/6f132f16-20e4-418c-8dee-b99d5f86d320.html?75910
    [code=SQL]