文本文件中数据读取后,怎么样高效将数据更新到数据库

.Net技术 码拜 8年前 (2016-02-26) 781次浏览
每天获取一个大约100M文本文件,文件中每行一条记录,记录数约80多万
文件读取后可用正则提取需要的三个字段,其中一个string类型的字段是唯一的,然后需要将之前不存在的数据更新到数据库,每天新增的数据量大致在100条以内,问一下怎么样高效的将数据更新到数据库
第一天文本文件样例
sports.sina.com.cn,Type is sport,2016-06-24,sport.txt
news.sina.com.cn,Type is news,2016-06-24,news.txt
news.163.com,Type is news,2016-06-24,news.txt
提取字段样例
sports.sina.com.cn     sport    2016-06-24
news.sina.com.cn    news    2016-06-24
news.163.com    news    2016-06-24
第二天文本文件样例
sports.sina.com.cn,Type is sport,2016-06-24,sport.txt
news.sina.com.cn,Type is news,2016-06-24,news.txt
sports.163.com,Type is sport,2016-06-24,sport.txt
news.163.com,Type is news,2016-06-24,news.txt
数据的变更位置是没有规律的,问一下要将数据更新到数据库,怎么做最高效
解决方案

10

其实越是有知识的人,越不会说“最xxxx”这种话,而只会说“更xxxxx”这种话。原因是技术应用不可能是什么给灾区捐赠帐篷衣物那种状态下的产物,而是竞争的产物。
这代表着两种态度。前者是本人不提供现有的状态,而是考别人的态度;而后者是不惧技术,但是不断重构的态度。要说“最xxxxx”,而本人不先列出几种供人评价的方案,那就是与人玩耍的时候才说的了。

40

1、SQL TRUNCATE TABLE 语句清除全部历史数据;
2、C# SqlBulkCopy 重新插入分析好的数据

40

引用 8 楼 fungchou 的回复:

1、SQL TRUNCATE TABLE 语句清除全部历史数据;
2、C# SqlBulkCopy 重新插入分析好的数据

对8L的补充
将数据全部写入数据库中的某个专门用来导入你这个文本记录的表(SqlBuckCopy,80w条记录写入估计也就几秒钟的事,当然写入前要删除表数据),然后通过两个表关联插入的方式插入数据,只要两个表的唯一性标志(不一定是主键)有索引,那么这样效率也是可以的,直接删原始表风险太大,所以通过临时表来降低风险,临时表TRUNCATE TABLE 错了也无所谓

10

像楼上说的,
1是数据库导入后关联查询过滤出新增的记录,然后把新增的100条记录更新到正式表,再删除临时表。
2是直接覆盖式更新。原因是两个数据源(文件和数据库),都是80万条数据,要过滤出重复的,最简单的就是逐个对比,这个是必须的。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明文本文件中数据读取后,怎么样高效将数据更新到数据库
喜欢 (0)
[1034331897@qq.com]
分享 (0)