c#数据库解析
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#数据库解析,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3455字,纯文字阅读大概需要5分钟。
内容图文
![c#数据库解析](/upload/InfoBanner/zyjiaocheng/880/0d9243f121be43e9a703b270549f86ae.jpg)
- 引言
工作需要将数十万条文本数据解析存入Mysql数据库中,代码使用C#实现,存储效率还可以,以下是一些主要代码的说明。
txtdataToMysql
项目描述:解析文本文件,该文件使用爬虫爬下的数十万条数据,主要是图片以及图片关键字,图片信息使用','
分隔,关键字使用 ' '
(一个空格),关键字不允许重复。
- 分析需要创建的数据库
该数据库为多对多,所以需要三张表,一张表为image_info
,一张为image_keyword
,一张为关系表img_and_key_relation
。在这里并没有添加外键,加入外键后插入数据难度比较大,Mysql
还没有具体学习过,关于主键与外键的关系,以及外键的作用等以后补充。以下为创建数据库的代码12345
create database emotion; use emotion; create table image_Keyword(keyword_id int(4) not null primary key,keyword varchar(40) not null);create table image_info(image_id int(4) not null primary key,id_other varchar(20) not null,id_self varchar(9) not null,image_url varchar(100) not null);create table img_and_key_relation(relation_id int(4) not null primary key auto_increment,keyword_id int(4) not null,image_id int(4) not null);
这里并没有将image_info
与image_keyword
的主键设为自动增加,为了插入img_and_key_relation
表时能够获得其余两张表的键值,具体获得方法将在代码中讲解。
解析文本
代码使用c#写的所以可以使用按行读取文本,使用Split()
方法将文本进行解析,对于文本解析专门设置了一个class TxtFilter
,在该类中实现文本解析方法,在插入关键字时,使用Dictionary<string, int> keywordDic
,将关键字存入字典中,字典的关键字为解析的关键字
,使用字典因为要求键值唯一,这样在匹配关键字是可以方便,开始的时候并没有注意到Mysql数据库大小写不敏感,而c#的字典键值为大小写敏感的,所有在插入关键字是有些重复了,设置字典大小写不敏感需要如此创建字典Dictionary<string, int> keywordDic = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
这样可以保证插入的关键字唯一。对判断关键字的唯一性使用hashset
也是可以,但是不知道它能否无视大小写,所以还需要补充,hashset
的时间复杂度为O(1)
,而Dictionary
的时间复杂度为O(n)
,当数据量比较大时查找速度比较快。Dictionary
与hashset
的区别再去字典使用key
查找value
,查找value
的速度比较快,而hashset
为一个集合,关于这两个的区别以后还会补充,目前只知道这些。
- c#连接Mysql数据库
12345678910
private static string constr = @"Server=localhost;UserId=root;password=yourpassword;Database=databaseName"; public MySqlConnection sqlConnection() { MySqlConnection conn = new MySqlConnection(constr); conn.Open(); string msg = conn.State.ToString(); return conn; } public void sqlConnectionClose(MySqlConnection conn) { conn.Close(); }
这里创建了一个数据库类,在该类中实现以上两种方法,目的保护数据库账户密码,在这里并不需要,只是个人的一点想法,不知道对错
- 如何大批量插入数据到Mysql中
这里参考了链接采用了事物处理的方法,具体的还需要进一步学习。主要是将插入语句放入到一个List<string>
中,所以需要解析文本,生成插入语句,将所有的插入语句添加到一个列表中,为了检查插入语句的正确性,将所有的插入语句写入到一个txt文本中,方便检查。 - txtFilter类分析
解析的文本文件由一些特点,有些图片没有关键字,所以对于这些信息需要判断删除,并且解析关键字的时候有的关键字是空格,这些问题在开始的时候都没有考虑到。所以在原来的代码上添加了一些判定条件。为了检查方便将三张表的插入语句各自打印了出来,有些代码存在重复,可以优化一些,比如针对不同的操作设定操作码,使用switch case
语句,选择不同的筛选方式。先写出关键的文本解析语句,将所有插入语句存入List<string>
中,并且定义了将插入语句写入文本的函数,这样有利于查看插入语句是否存在问题。以下是主要函数代码:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051大专栏
内容总结
以上是互联网集市为您收集整理的c#数据库解析全部内容,希望文章能够帮你解决c#数据库解析所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。