1000条记录用结构数组表示。
每条记录一个结构,一个数组一个结果集。
int loadfile(char *tablename,FILE *ifd,char *buf,int buflen,char dlmt)
{
char *p,tabn[512];
OAD oad;
int ret;
int n,num;
INT8 now;
T_SQL_Connect *SQL_Connect;
struct batch_data *bp;
char *recs=NULL;
int rec_siz;
ret=get_DB_connect(&SQL_Connect,0);
if(ret) return -1;
// ShowLog(5,"loadfile:entry dlmt=0X%02X",dlmt&255);
now=now_usec();
ret=DAU_init(&_DAU,SQL_Connect,tablename,0,0);//按照tablename表结构,生成模板和数据结构。
if(ret) {
ShowLog(1,"loadfile:DAU_init tabname=%s,ret=%d",tablename,ret);
return -1;
}
rec_siz=DAU_RecSize(&_DAU);//求出struct的尺寸。
。。。。。。。。。
for(rows=0;!ferror(ifd);) {
if(!recs) {
recs=malloc(BATCH_NUM*rec_siz);//分配数组,用完由thread释放
p=recs;
}
if(!fgets(buf,buflen,ifd)) break;
TRIM(buf);
if(!*buf) continue;
pkg_dispack(p,buf,_DAU.srm.tp,dlmt);//用buf的数据填充这个结构
p+=rec_siz;
if(BATCH_NUM == ++n) {
ret=put_to_thread(n,recs);//发射到线程池进行多线程批量插入。
recs=NULL;
n=0;
}
}
}
if(n) {
ret=put_to_thread(n,recs);
n=0;
} else if(recs) free(recs);
【 在 DoorWay 的大作中提到: 】
: 你这个handle是?base也是自己算的吗?
: 假设查询结果返回1000条记录,怎么遍历这1000条记录,这1000条记录在内存里表示,各个数据库都一样?
: 不考虑你的结构体,想明白数据库结果集的内存表示。
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*