当前位置:Gxlcms > mysql > mysql上将文本上数据批量导入数据库c语言实现(CAPI)_MySQL

mysql上将文本上数据批量导入数据库c语言实现(CAPI)_MySQL

时间:2021-07-01 10:21:17 帮助过:41人阅读

其实原理很简单,想必大家应该都看了我写的那篇(一个代码学会c语言操作数据库)linux上通过c语言操作数据库实现基本的学生信息管理系统(增、删、查、改‘显示) http://blog.csdn.net/guoqianqian5812/article/details/41381645博文,那么大家肯定知道怎么完成插入一个学生信息的,只要大家知道那么下面批量将输入导入数据库就很好实现了,这个方法就是在通过fgets函数读取文件里的内容,每读取一行,然后用strtok函数将其分割开,获取有用的数据段传到C API函数哪里(insert函数),然后用sprintf函数将其格式化写入执行语句下面就和c语言操作数据库的“增”一样了。

代码如下:

[plain] view plaincopyprint?
#include   
#include   
#include   
#include   
  
MYSQL mysql;  
        /******通过insert into命令将数据批量导入数据库******/  
void insert(char *a,char *b,char *c)  
{  
    int t,r;  
    char query[400];   
    memset(query,0,400);  
    sprintf(query,"insert into EnglishWord4(Words,Translate,Num) values('%s','%s','%s')",a,b,c);//插入哪个表  
    printf("正在执行:%s\n",query);  
    t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));  
    if(t)  
    {  
      printf("执行插入时出现异常: %s",mysql_error(&mysql));  
    }  
    else  
    {  
        printf("添加成功\n");  
    }  
}  
int main()  
{     
    FILE *fp;  
    char buff[300];  
    fp=fopen("englishword4.txt","r");//打开不同的文件  
    if(fp==NULL)  
    {  
        printf("Fail to open\n");  
        exit(1);  
    }     
    MYSQL_RES *res;  
    MYSQL_ROW row;   
    mysql_init(&mysql);  
    if (!mysql_real_connect(&mysql,"localhost", "root", NULL, "English",0,NULL,0))  
    {  
  
        printf( "Error connecting to database: %s",mysql_error(&mysql));  
  
    }  
    else  
    {  
        printf("Connected...\n");  
    }  
    char *p;  
    char a[20];  
    char b[200];  
    char c[10];  
    int length = 0;  
    while(fgets(buff,300,fp)!=NULL)  
    {  
        if(buff[strlen(buff)-1]=='\n')  
        {  
            buff[strlen(buff)]='\0';   
        }  
        strcpy(a,strtok(buff,"#"));  
        int i=0;  
        while((p=strtok(NULL,"#")))  
        {  
            if(i==0)  
            {  
                //printf("跳过\n");  
            }  
            if(i==1)  
            {  
                strcpy(b,p);  
                  
            }  
            if(i==2)  
            {  
                strcpy(c,p);  
            }  
            ++i;  
        }  
        length = strlen(c);  
        c[length-2]='\0';  
        insert(a,b,c);  
        bzero(a,sizeof(a));  
        bzero(b,sizeof(b));  
        bzero(b,sizeof(c));  
          
    }  
    mysql_close(&mysql);  
    fclose(fp);  
    return 0;  
}  

附加一个操作的表大家可以试试,这是我的格式

[plain] view plaincopyprint?
a#[ei]#art. 一;任一;每一#1  
able#['eibl]#adj. 能#1  
about#[ə'baut]#prep. 关于#1  
above#[ə'bʌv]#prep. 在...上面 #1  
act#[ækt]#vt. 行动#1  
add#[æd]#vi. 加;增加#1  
afraid#[ə'freid]#adj. 害怕的#1  
after#['ɑ:ftə]#adv. 后来#1  
again#[ə'ɡen]#adv.再一次#1  
against#[ə'ɡenst]#prep. 反对#1  
age#[eidʒ]#n. 年龄#1  
ago#[ə'ɡəu]#adv. 以前#1  
agree#[ə'ɡri:]#vt. 同意;赞成#1  
air#[εə]#n. 空气#1  
all#[ɔ:l]#adj. 全部的 n. 全部#1  
allow#[ə'lau]#vt. 允许#1  
also#['ɔ:lsəu]#adv. 也#1  
always#['ɔ:lweiz]#adv. 总是;永远#1  
am#[æm]#v. 是#1  
among#[ə'mʌŋ]#prep. 在…中间;在…之中#1  
an#[æn]#art. 一(在元音字母前)#1  
and#[ænd]#conj. 和#1  
anger#['æŋɡə]#n. 怒;愤怒;忿怒#1  
animal#['æniməl]#n. 动物#1  
answer#['ɑ:nsə]#vt. 回答#1  
any#['eni]#adj. 任何的#1  
appear#[ə'piə]#vi. 出现#1  
apple#['æpl]#n. 苹果;家伙#1  
are#[ɑ:]#v. 是(be的第二人称单复数现在式)#1  
area#['εəriə]#n. 区域#1  
arm#[ɑ:m]#n. 手臂#1  
arrange#[ə'reindʒ]#vt. 安排#1  
arrive#[ə'raiv]#vi. 到达#1  
art#[ɑ:t]#n. 艺术#1  
as#[æz]#conj. 因为#1  
ask#[ɑ:sk]#vt. 问#1  
at#[æt]#prep. 在#1  
atom#['ætəm]#n. 原子#1  

思想很简单

结果:

启动查找表格结果

\

建立被导入数据的表和显示内容

\

执行插入程序:

\

查看插入后的表的内容

\

人气教程排行