热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MysqlMySqlBulkLoader在.NET平台下的批量插入

批量导入publicboolTranBatchImpo

///

/// 批量导入/// ///

/// public bool TranBatchImportData(DataSet dataSet){string fileServerPath = System.Web.Hosting.HostingEnvironment.MapPath("/");if (dataSet != null && dataSet.Tables.Count > 0){using (MySqlConnection cOnn= (MySqlConnection)GetSQLConnection()){if (conn.State != ConnectionState.Open){conn.Open();}foreach (DataTable dt in dataSet.Tables){if (dt.Rows.Count == 0) continue;string tmpPath = fileServerPath + "Uploads\\UpTemp";if (!Directory.Exists(tmpPath))Directory.CreateDirectory(tmpPath);tmpPath = Path.Combine(tmpPath, "Temp.csv");//csv文件临时目录if (File.Exists(tmpPath)){File.Delete(tmpPath);}string csv = DataTableToCsv(dt);File.WriteAllText(tmpPath, csv, new UTF8Encoding(false));int insertCount = 0;//MySqlTransaction tran = conn.BeginTransaction();MySqlBulkLoader bulk = new MySqlBulkLoader(conn){FieldTerminator = ",",FieldQuotatiOnCharacter= '"',EscapeCharacter = '"',LineTerminator = Environment.NewLine, //"\r\n",FileName = tmpPath,Local = true,NumberOfLinesToSkip = 0,TableName = dt.TableName,CharacterSet = "UTF8"};try{bulk.Columns.AddRange(dt.Columns.Cast().Select(colum => colum.ColumnName).ToList());insertCount = bulk.Load();}catch (MySqlException ex){throw ex;}finally{if (File.Exists(tmpPath)){File.Delete(tmpPath);}}}return true;}}return false;}///将DataTable转换为标准的CSV /// ///

数据表 /// 返回标准的CSV private static string DataTableToCsv(DataTable table){//以半角逗号(即,)作分隔符,列为空也要表达其存在。 //列内容如存在半角逗号(即,)则用半角引号(即"")将该字段值包含起来。 //列内容如存在半角引号(即")则应替换成半角双引号("")转义,并用半角引号(即"")将该字段值包含起来。 StringBuilder sb = new StringBuilder();DataColumn colum;foreach (DataRow row in table.Rows){for (int i = 0; i

这个地方特殊说明一下,平时用的Encoding.UTF8 会导致生成的csv变为UTF-8 BOM的类型,会导致插入数据库的数据出现错误。所以选择采用new UTF8Encoding(false)这种写法。

 


推荐阅读
  • 开发日志:高效图片压缩与上传技术解析 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • Zabbix自定义监控与邮件告警配置实践
    本文详细介绍了如何在Zabbix中添加自定义监控项目,配置邮件告警功能,并解决测试告警时遇到的邮件不发送问题。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • 本文详细介绍了PostgreSQL与MySQL在SQL语法上的主要区别,包括如何使用COALESCE替代IFNULL、金额格式化的方法、别名处理以及日期处理等关键点。 ... [详细]
  • java类名的作用_java下Class.forName的作用是什么,为什么要使用它?
    湖上湖返回与带有给定字符串名的类或接口相关联的Class对象。调用此方法等效于:Class.forName(className,true,currentLoader) ... [详细]
  • 2022年2月 微信小程序 app.json 配置详解:启用调试模式
    本文将详细介绍如何在微信小程序的 app.json 文件中启用调试模式(debug),并通过实际案例展示其配置方法和应用场景。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • 本文详细介绍了如何在最新版本的Xcode中重命名iOS项目,包括项目名称、应用名称及相关的文件夹和配置文件。通过本文,开发者可以轻松完成项目的重命名工作。 ... [详细]
author-avatar
郭原雪2865
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有