假如有个表tbltest: 字段:testid,testname;(表中的记录有几千万条记录)
需要从文本文件中读数据(文件的数据有1百万条),然后把数据与表tbltest中的testname进行比较进行查询。统计出表中的记录数
在C++中使用vector<string> v_testname保存数据,
使用for循环写成的查询语句为:
string strSQL;
strSQL = "select count(*) from tbltest where testname in ";
for(vector<int>::size_type i=0; i!=v_testname.size(); ++i)
{
  if(i==0)
  {
    strSQL +="('"+v_testname[i]+"'";
  }else{
    strSQL += ",'"+v_testname[i]+"'";
  }
}
strSQL +=")";如果这样的话,string太长了,不行。
如果分开每条记录进行查询的话,查询次数太多,速度很慢。
请问还有什么方法进行查询?

解决方案 »

  1.   

    先把文本文件导入数据库,然后用sql语句查询
      

  2.   

    这样的问题也不奇怪,有这样的需求,我们就做过移动的手机号查询,文件里面有几十万条数据,需要与数据库中的记录对比,我们的方式也是先把文件导入到数据库的一个中间表中,然后用SQL语句执行,结果返回到另一个中间表中
      

  3.   

    先把数据导入到一个临时表中,然后用sql 语句比较;DW中经常使用的方法