求助如何 将一个txt中的数据 录入 access数据库中  txt中有上万条数据!  谢谢各位大虾!

解决方案 »

  1.   

    不知道你数据是什么形式排的,我以前做的是一行一条记录,所以如下处理
    一行一行的读取然后通过标记来截取信息再插入到access中去
      

  2.   

    统计时期:2010,用户名:c100314,登录IP:192.168.21.200,服务器IP:127.0.0.1,在线时长:50837
    统计时期:2010,用户名:c100313,登录IP:192.168.21.133,服务器IP:127.0.0.1,在线时长:13772
    统计时期:2010,用户名:c100315,登录IP:192.168.21.135,服务器IP:127.0.0.1,在线时长:69724
    统计时期:2010,用户名:w100409,登录IP:192.168.23.52,服务器IP:127.0.0.1,在线时长:44818
    类似于上面的数据   如何 批量录入噢?  求实例一枚   !!  谢谢 
      

  3.   

    ACCESS中导入外部数据就可以了噻
      

  4.   

    上万条数据啊...我当时做的插入数据的方式可傻透了,就是用CString提关键信息,然后生成SQL语句往Access里插...不知道有什么更快的方法没(用C++实现)?
      

  5.   

    这个是程序设计题目。
    如何直接access外部导入我可以实现插入一条数据  跪求 批量插入数据循环的代码!!
      

  6.   

    既然能写出导入一条的方法,那么批量导入就没问题了
    如果使用的SQL导入数据,可以写一个函数自动生成SQL指令,然后根据从txt中读取到的数据生成新的SQL语句并执行,然后继续读取txt,再生成新的SQL指令....
    当读取txt文件到EOF时结束,也就完成了导入。
    我使用ADO做的,不知道其他的连接数据库方法是否同理。
      

  7.   

    感谢各位大虾 
    最后我完成了 读的不是TXT文件 而是二进制文件 代码如下
    void CServerView::OnInsert() 
    {
    // TODO: Add your control notification handler code here
    TEST2 MyRead;
    FILE *fp;
    fp=fopen("E:\\Math.bat","rb");             //打开二进制文件 进行循环读取 放入access数据库
    if(fp==NULL)

    // printf("\nerror on open !");
    AfxMessageBox("error on open !");
    }
    int  Icolumn1=1;
        char a[20]="1";
    while(!feof(fp))
    {

    char Syear[10];
    char Sday[10];
    char Smonth[10];

    int year,day,month;
    time_t timeTmp;
    struct tm* timeNow;
    m_pSet->AddNew();
    // m_pSet->SetFieldNull(&(m_pSet->m_column1),FALSE);
    fread((void*)&MyRead,sizeof(MyRead),1,fp);        //读入结构体的函数
    if(MyRead.sTime< NOWATIME)                        //对时间进行判断 不能大于当前时间 否则 下面 time.h的函数会报错 超出int 型长度
    {


                m_pSet->m_column1=a;
    strcpy(a," ");
    Icolumn1++;
                sprintf(a,"%d",Icolumn1);
    m_pSet->m___ID=MyRead.Name;
    m_pSet->m_____IP=MyRead.logIP;
    m_pSet->m____IP=MyRead.logIP;

    timeTmp=MyRead.sTime;
    timeNow = localtime(&timeTmp);
    // colunm2=timeNow->tm_sec+timeNow->tm_min*100;
    // sprintf(Scolumn2,"%d",colunm2);
    m_pSet->m_column2=asctime(timeNow);  //asctime  时间 结构体转化为字符串
    year=timeNow->tm_year+1900;
    sprintf(Syear,"%d",year);
    m_pSet->m_year=Syear; month=(timeNow->tm_year+1900)*100+timeNow->tm_mon+1;
    sprintf(Smonth,"%d",month);
    m_pSet->m_month=Smonth; day=(timeNow->tm_mon+1)*100+(timeNow->tm_year+1900)*10000+timeNow->tm_mday;
    sprintf(Sday,"%d",day);
    m_pSet->m_day=Sday;

    int MymTime=MyRead.sTime+MyRead.logtime;           //登入时间=登出时间+在线时间    登出时间 没提取出来
    timeTmp=MymTime;
    timeNow=localtime(&timeTmp);                      
    m_pSet->m_column3=asctime(timeNow);
    char str[10];
    sprintf(str,"%d",MyRead.logtime);             //整型转化为字符串的函数 sprintf
    m_pSet->m_column4=str;

    m_pSet->Update();
    m_pSet->Requery();
    }
    else 
    continue;

    // TRACE("o!!");
    }
    AfxMessageBox("插入成功 !");



    }