Chinaunix
标题:
同步数据遇到的问题
[打印本页]
作者:
butterzz2000
时间:
2007-07-18 14:04
标题:
同步数据遇到的问题
int InsertBDTTable()
{
int n;
EXEC SQL BEGIN DECLARE SECTION;
int nCount;
BDTNEWSTRU bdtnewstru;
BDTSTRU bdtstru;
EXEC SQL END DECLARE SECTION;
EXEC SQL SELECT COUNT (*) INTO :nCount FROM BDTNEW;
EXEC SQL DECLARE bdtnewcur CURSOR FOR SELECT * FROM BDTNEW;
EXEC SQL OPEN bdtnewcur;
for(n = 0; n < nCount; n++)
{
memset(&bdtnewstru, 0, sizeof(bdtnewstru));
memset(&bdtstru, 0, sizeof(bdtstru));
EXEC SQL FETCH bdtnewcur INTO :bdtnewstru;
EXEC SQL INSERT BDT VALUES (:bdtnewstru);
if (sqlca.sqlcode == SQLCODE_DUPKEY)
{
EXEC SQL DELETE BDT WHERE BDTPRO_COD =:bdtnewstru.szPRO_COD AND
BDTBR =:bdtnewstru.szBR;
EXEC SQL INSERT BDT VALUES (:bdtnewstru);
}
}
EXEC SQL COMMIT;
EXEC SQL CLOSE bdtnewcur;
EXEC SQL DEALLOCATE CURSOR bdtnewcur;
}
如上
如果nCount值小的时候是没问题的。
可是如果nCount值达到几十万,并且,需要插入的数据达到几十万的时候。
日志空间就满了。
这个该如何解决呢??
我曾试过把 EXEC SQL COMMIT;
放到insert操作之后,即:
if (sqlca.sqlcode == SQLCODE_DUPKEY)
{
EXEC SQL DELETE BDT WHERE BDTPRO_COD =:bdtnewstru.szPRO_COD AND
BDTBR =:bdtnewstru.szBR;
EXEC SQL INSERT BDT VALUES (:bdtnewstru);
EXEC SQL COMMIT;
}
可最后结果是只完成了插入一条数据。
请高手帮我解决以下
作者:
butterzz2000
时间:
2007-07-19 08:56
??一天了都没人??
作者:
aliking
时间:
2007-07-19 16:13
在一个打开的游标遍历过程中,是没办法提交多个事务的。
如果你的应用这么简单,建议用BCP同步。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2