Makefile : #This is a Makefile for select_test.c CC = gcc INCLUDE = -I/usr/include/mysql LIBPATH = -L/usr/lib/mysql LLIB = -lmysqlclient select_test:select_test.c $(CC) -o select_test select_test.c $(INCLUDE) $(LIBPATH) $(LLIB)
数据库表数据备份程序select_test.c:
#include #include #include "mysql.h" #include #include #define SELECT_QUERY "select IPaddress,(UDPrcvdFromRemote+UDPsentRemotely+TCPrcv dFromRemote+TCPsentRemotely) as data from IPtraffic where IPaddress like \"%s\" or IPaddress like \"%s\"" #define INSERT_QUERY "insert into test (IPaddress,data,dates) values (\"%s\",%d,\"%s\")" #define TEST_QUERY "select dates from test where dates=\"%s\"" /*获取当前日期*/ getdates(char *currentdate) { struct timeval datetemp; struct tm * datetemp1; gettimeofday(&datetemp,(void *)NULL); datetemp1 = localtime(&(datetemp.tv_sec)); sprintf(currentdate,"%d-%02d-%02d",datetemp1->tm_year+1900,datetemp1->tm_mon+1, datetemp1->tm_mday); } int main(int argc, char **argv) { unsigned int num_fields; unsigned int i; int count,num,charge; MYSQL mysql,*sock; MYSQL_RES *res; MYSQL_FIELD **fields; MYSQL_ROW row; char selectqbuf[1024]; char insertqbuf[1024]; char testqbuf[512]; char currentdate[11]; currentdate[10] = 0; if (argc != 3) { fprintf(stderr,"usage : select_test \n\n");#设定需要统计的网段 exit(1); } mysql_init(&mysql); if (!(sock= mysql_real_connect(&mysql,NULL,0,0,"NTOP",0,NULL,0))) { fprintf(stderr,"Couldn't connect to engine!\n%s\n\n",mysql_error(&mysql)); perror(""); exit(1); } /* IN NTOP databases,if have some recorders same as currentdate,don't in sert them to data`table*/ getdates(currentdate); charge=1; sprintf(testqbuf,TEST_QUERY,currentdate); if(mysql_query(sock,testqbuf)) { fprintf(stderr,"Query failed (%s)\n",mysql_error(sock)); exit(1); } if (!(res=mysql_store_result(sock))) { fprintf(stderr,"Couldn't get result from %s\n", mysql_error(sock)); exit(1); } i=mysql_num_rows(res); if (i==-1) { printf("couldn't run test select with currentdate\n"); } if ((i!=0)&&(i!=-1)) { charge=0; printf("IN test table,having some recorders included currentdate,error!\n"); exit(1); } mysql_free_result(res); mysql_close(sock); if(!(sock= mysql_real_connect(&mysql,NULL,0,0,"NTOP",0,NULL,0))) { fprintf(stderr,"Couldn't connect to engine!\n%s\n\n",mysql_error(&mysql)); perror(""); exit(1); } /#sleep(100)#/ sprintf(selectqbuf,SELECT_QUERY,argv[1],argv[2]); if(mysql_query(sock,selectqbuf)) { fprintf(stderr,"Query failed (%s)\n",mysql_error(sock)); exit(1); } if (!(res=mysql_store_result(sock))) { fprintf(stderr,"Couldn't get result from %s\n", mysql_error(sock)); exit(1); }
while ((row=mysql_fetch_row(res))&&charge) { num=atoi(row[1]); sprintf(insertqbuf,INSERT_QUERY,row[0],num,currentdate); mysql_query(sock,insertqbuf);