orcale中 clob字段存储着 "889.123,556,111"这样的数据,数据量很大,几十万条。
现在要按逗号拆分,存储,目前的做法是仅是拆分成数组,然后遍历数组入库,
如下, R21 R22 长度也是不相同的,如果在循环中写判断,大神们有没有什么好的思路,给个点建议
string[] R21 = CLOBA数据.Split(new char[] { ',' }, StringSplitOptions.None);
string[] R22 = CLOBB数据.Split(new char[] { ',' }, StringSplitOptions.None);
........
for (int i = 0; i < R21.LENGTH; i++)
{
循环插入 ......................
insert into table (R21[i],R22[]) ;
.......................
}
您好,这个方法效率很好,服务器数据库数据只保留5天,第二天会删除第一天的,第三天会删除第二天的。以此类推,而且表里面都是clob这样的大数据,没有主键,有没有什么方法可以每次执行时候都读到最新的数据呢?这样读出来,每次都会插入很多重复数据
追答这个东西和上面的技术无关,根据你的业务需求获取相应的数据就行了,如果不能获取到正确的数据,你应该检查你的数据库设计是否满足业务要求.
本回答被提问者和网友采纳对,我就需要这样类似缓冲区的模式,读几万条数去flush()一下,您那里有没有这样的代码,或者相关的网页,介绍下,谢谢啦。
追答oracle相对于sql,它明显多了一个rownum列可用。
那么,你要100行的缓冲区,为什么不从这里入手?
举个例子:
第一次循环:
where rownum>0 and rownum 100 and rownum <=200
以此类推,将每次语句查出来的结果集,进行for或者foreach的操作。
然后,你可以每行进行Split,拼接:insert into table (R21[i],R22[])
最后,使用事务一次性提交,所有即可。
这种样子,比你直接查表获取的结果集进行for或foreach要快的多。