批量数据更新问题 在线等!

happydayandday 2008-03-28 11:04:23
目前有几十万数据,现在要求对其中的数据进行程序更新,目前具体思路是这
1、要更新的数据进行处理存入数组
2、用sql语句进行批量
代码如下
string[] id = new string[1000000];
string[] Detail = new string[1000000];
string[] Catalog = new string[1000000];
string[] Foreword = new string[1000000];
string[] AuthorIntroducer = new string[1000000];

int count = 0;
string strsql = "select id,Detail,Catalog,Foreword,AuthorIntroducer from PT order by id ";
SqlDataReader dr = new DataAccess().dataReader(strsql);
while(dr.Read())
{
id[count] = dr["id"].ToString();
Detail[count] = StringUnity.ReplaceLineCode(new Verify().DoNullString(dr["Detail"]));
Catalog[count] = StringUnity.ReplaceLineCode(new Verify().DoNullString(dr["Catalog"]));
Foreword[count] = StringUnity.ReplaceLineCode(new Verify().DoNullString(dr["Foreword"]));
AuthorIntroducer[count] = StringUnity.ReplaceLineCode(new Verify().DoNullString(dr["AuthorIntroducer"]));
count = count + 1;
}
dr.Close();

for (int i = 0; i < count; i++)
{
strsql = " update PT set Detail='" + StringUnity.FormatString(Detail[count])
+ "',Catalog='" + StringUnity.FormatString(Catalog[count])
+ "',Foreword='" + StringUnity.FormatString(Foreword[count])
+ "',AuthorIntroducer='" + StringUnity.FormatString(AuthorIntroducer[count])
+ "' where id=" + id[count];
new DataAccess().ExecuteNonQuerySql(strsql);
}
...全文
142 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
benyouyong 2008-03-28
  • 打赏
  • 举报
回复
LZ你的方法是开玩笑吧。呵呵!
懒牛科技 2008-03-28
  • 打赏
  • 举报
回复
楼主 需要改变的是更新的思路.而不是在这个思路上寻求改进方法.
duping9626 2008-03-28
  • 打赏
  • 举报
回复
大数据量存入数组必然很占内存
1.你说的好像可以直接用SQL语句处理
如:UPDATE TABLE1 SET a='***' INNER JOIN TABLE2 ON TABLE1.id=TABLE2.ID WHERE ...
2.如楼上所迷,直接用SqlDataAdapter更新
sbqcel 2008-03-28
  • 打赏
  • 举报
回复
这种情况为什么不用SqlDataAdapter?
直接填充到DataTable,然后更新DataTable的数据,再用SqlDataAdapter.Update多方便,搞什么数组?
wsklt 2008-03-28
  • 打赏
  • 举报
回复
stringBuild 取代string[]
wzy_love_sly 2008-03-28
  • 打赏
  • 举报
回复
怎么都是pt表?看起来好象没更新哦..
jinmiwa 2008-03-28
  • 打赏
  • 举报
回复
我的思路是这样的:先查询出前几条记录,然后再循环更新每条记录。
没用到数组。
itfutao 2008-03-28
  • 打赏
  • 举报
回复
关注!
happydayandday 2008-03-28
  • 打赏
  • 举报
回复
问题,第一步存入数组就很慢,需要改进
第二步情况未知?估计需改进
gt2007good 2008-03-28
  • 打赏
  • 举报
回复
帮楼主顶 我也遇到了
csharp_start 2008-03-28
  • 打赏
  • 举报
回复
呵呵,开眼界啊!
Cassava 2008-03-28
  • 打赏
  • 举报
回复
晕死,既然用程序循环一条条更新,为什么不用存储过程呢
kangnan008 2008-03-28
  • 打赏
  • 举报
回复
楼主为什么不用存储过程呢?????
happydayandday 2008-03-28
  • 打赏
  • 举报
回复
我想到一个办法,可不可以分段读取,比如分几个1万条进行读取
shweze 2008-03-28
  • 打赏
  • 举报
回复
而且 循环两次 为何不在获取每条语句后插入呢
happydayandday 2008-03-28
  • 打赏
  • 举报
回复
帮忙啊
happydayandday 2008-03-28
  • 打赏
  • 举报
回复
DataTable更慢吧?寻求中....
ericzhangbo1982111 2008-03-28
  • 打赏
  • 举报
回复
.....写个存储过程就成了..几十万条数据.你的内存很大阿!

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧