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

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

WBOY
Release: 2016-06-01 13:04:33
Original
1386 people have browsed it

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

代码如下:

[plain] view plaincopyprint?
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <mysql.h>  
  
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(&#39;%s&#39;,&#39;%s&#39;,&#39;%s&#39;)",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]==&#39;\n&#39;)  
        {  
            buff[strlen(buff)]=&#39;\0&#39;;   
        }  
        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]=&#39;\0&#39;;  
        insert(a,b,c);  
        bzero(a,sizeof(a));  
        bzero(b,sizeof(b));  
        bzero(b,sizeof(c));  
          
    }  
    mysql_close(&mysql);  
    fclose(fp);  
    return 0;  
}  
Copy after login

Copy after login

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

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

思想很简单

 

结果:

启动查找表格结果

\

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

\

执行插入程序:

\

查看插入后的表的内容

\

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template