现有表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更新的话会做操作日志和各种记录谢谢
然后用导出功能导出了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更新的话会做操作日志和各种记录谢谢
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
不,懂;帮,顶;学,习;赚,分。
虽然这么回贴可能会被删除。
谁他妈的删除了就是个王八蛋。
强烈抗议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]