批量数据插入CODE表
解析code.csv文件批量插入CODE[PFPN])
插入DB时,做简单检查:主键(前三个栏位)中任何栏位不允许为空,不符合条件的节点不处理,但需要记录不符合条件的记录的总数,在返回结果中体现。
出现重复记录时不要报错而是更新,最终返回结果需要返回更新和插入的记录条数。
这是数据库表的基本结构,前三个栏位是主键
INSERT INTO cms.ccode
(CODE_CATE, CODE, CODE_EXT, SUBITEM, CODE_DSC, EXT_1, EXT_2, EXT_3, EXT_4, EXT_5)
VALUES('PFPN', '0002', 'P101TCAWA0Z', 'P101CCAW70Z', '10.1', '1410901-A1', 'N1011', 'C101NWT3', 'P101TCAWA1', 'M01');
你得上传code.csv文件(到百度盘,给出地址),并且给出你的数据库用什么类型,才好具体帮到你。
主键(前三个栏位)中任何栏位不允许为空,不知道你的数据文件怎么体现为空的,是直接前面三个逗号,还是根本缺少3列。还是要看了你的文件才知道。
作为一般的方法,这里有一个现成的读取csv文件的代码:
https://blog.csdn.net/pulci/article/details/51099251
int GetTotalLineCount(FILE* fp); //计算csv文件中的总行数
int GetTotalColCount(FILE * fp); //计算csv文件中的总列数(以第一行的列数为基准)
int AssignSpaceForData(int inumdata); //通过指针*giCsvData给数据动态分配内存空间
void FreeCsvData(); //释放动态数据内存
int ReadCsvData(char* csvFilePath); //读取Csv中数据(本例默认数据类型为int)
void ShowCsvData(); //通过控制台显示读取的csv数据
直接读取到二维字符串数组
之后就可以拼接sql插入数据库(用sprintf)
/*mysql数据库的查询*/
#include <stdio.h>
#include <string.h>
#include "/usr/local/mysql/include/mysql.h"
int main()
{
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
char *query;
int flag, t;
mysql_init(&mysql);
if(!mysql_real_connect(&mysql, "localhost", "root", "123456", "test", 0, NULL, 0)) {
printf("Failed to connect to Mysql!\n");
return 0;
}else {
printf("Connected to Mysql successfully!\n");
}
query = "select * from student";
/*查询,成功则返回0*/
flag = mysql_real_query(&mysql, query, (unsigned int)strlen(query));
if(flag) {
printf("Query failed!\n");
return 0;
}else {
printf("[%s] made...\n", query);
}
/*mysql_store_result讲全部的查询结果读取到客户端*/
res = mysql_store_result(&mysql);
/*mysql_fetch_row检索结果集的下一行*/
while(row = mysql_fetch_row(res)) {
/*mysql_num_fields返回结果集中的字段数目*/
for(t=0; t<mysql_num_fields(res); t++)
{
printf("%s\t", row[t]);
}
printf("\n");
}
mysql_close(&mysql);
return 0;
}