.net core利用MySqlBulkLoader大数据批量导入MySQL
最近用core写了一个数据迁移小工具,从SQLServer读取数据,加工后导入MySQL,由于数据量太过庞大,数据表都过百万,常用的dapper已经无法满足。三大数据库都有自己的大数据批量导入数据的方式,
MSSQL有SqlBulkCopy,MYSQL有MySqlBulkLoader,Oracle有OracleBulkCopy,对应各自的驱动。
一:生成csv文件
- public static class CSVEx
- {
- /// <summary>
- ///将DataTable转换为标准的CSV
- /// </summary>
- /// <param name="table">数据表</param>
- /// <returns>返回标准的CSV</returns>
- public static void ToCsv(this DataTable table)
- {
- //以半角逗号(即,)作分隔符,列为空也要表达其存在。
- //列内容如存在半角逗号(即,)则用半角引号(即"")将该字段值包含起来。
- //列内容如存在半角引号(即")则应替换成半角双引号("")转义,并用半角引号(即"")将该字段值包含起来。
- StringBuilder sb = new StringBuilder();
- DataColumn colum;
- foreach (DataRow row in table.Rows)
- {
- for (int i = 0; i < table.Columns.Count; i++)
- {
- colum = table.Columns[i];
- if (i != 0) sb.Append(",");
- if (colum.DataType == typeof(string) && row[colum].ToString().Contains(","))
- {
- sb.Append("\"" + row[colum].ToString().Replace("\"", "\"\"") + "\"");
- }
- else sb.Append(row[colum].ToString());
- }
- sb.AppendLine();
- }
- File.WriteAllText(table.TableName + ".csv", sb.ToString());
- }
- }
二:批量导入数据
- public static class MySqlHelper
- {
- /// <summary>
- /// 批量导入
- /// </summary>
- /// <param name="_mySqlConnection"></param>
- /// <param name="dt"></param>
- /// <returns></returns>
- public static int BulkLoad(MySqlConnection _mySqlConnection, DataTable table)
- {
- var columns = table.Columns.Cast<DataColumn>().Select(colum => colum.ColumnName).ToList();
- MySqlBulkLoader bulk = new MySqlBulkLoader(_mySqlConnection)
- {
- FieldTerminator = ",",
- FieldQuotationCharacter = '"',
- EscapeCharacter = '"',
- LineTerminator = "\r\n",
- FileName = table.TableName + ".csv",
- NumberOfLinesToSkip = 0,
- TableName = table.TableName,
- };
- bulk.Columns.AddRange(columns);
- return bulk.Load();
- }
- }
demo地址:https://github.com/xiaopotian1990/MySqlBulkLoaderDemo
.net core利用MySqlBulkLoader大数据批量导入MySQL的更多相关文章
- Java实现数据批量导入mysql数据库
本文完全照搬别人的. 原文标题:Java实现数据批量导入数据库(优化速度-2种方法) 原文地址:https://blog.csdn.net/qy20115549/article/details/526 ...
- 分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节
1:MSSQL SQL语法篇: BULK INSERT [ database_name . [ schema_name ] . | schema_name . ] [ table_name | vie ...
- 大数据批量导入,解决办法,实践从定时从 sqlserver 批量同步数据到 mySql
c#代码,批量导入数据代码 public class MySql_Target : ZFCommon.DataAccesser.Base.DABase { public MySql_Target() ...
- JAVA JDBC大数据量导入Mysql
转自https://blog.csdn.net/q6834850/article/details/73726707?tdsourcetag=s_pctim_aiomsg 采用JDBC批处理(开启事务. ...
- [Django]数据批量导入
前言:历经一个月的复习,考试终于结束了.这期间上班的时候有研究了Django网页制作过程中,如何将数据批量导入到数据库中. 这个过程真的是惨不忍睹,犯了很多的低级错误,这会在正文中说到的.再者导入数据 ...
- SQL Server中bcp命令的用法以及数据批量导入导出
原文:SQL Server中bcp命令的用法以及数据批量导入导出 1.bcp命令参数解析 bcp命令有许多参数,下面给出bcp命令参数的简要解析 用法: bcp {dbtable | query} { ...
- 将Excle中的数据批量导入数据库
namespace 将Excle中的数据批量导入数据库{ class Program { static void Main(string[] args) { S ...
- 将execl里的数据批量导入数据库
本文将采用NPOI插件来读取execl文件里的数据,将数据加载到内存中的DataTable中 /// <summary> /// 将Excel转换为DataTable /// </s ...
- mysql中把一个表的数据批量导入另一个表中
mysql中把一个表的数据批量导入另一个表中 不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定 ...
随机推荐
- 我的AOP那点事儿--2
在<我的AOP那点事儿-1>中,从写死代码,到使用代理:从编程式AOP到声明式AOP.一切都朝着简单实用主义的方向在发展.沿着 Spring AOP 的方向,Rod Johnson(老罗) ...
- cratedb joins 原理(官方文档)
JOINs are essential operations in relational databases. They create a link between rows based on c ...
- Tcl 和 Raft 发明人的软件设计哲学
John Ousterhout(斯坦福大学教授,Tcl 语言.Raft 协议的发明人...真的是超级牛人,Title 好多好多,这里就列几个大家熟悉的),在 Google 做了一次演讲,题目就叫 「A ...
- oracle之 Got minus one from a read call 与 ORA-27154: post/wait create failed
在部署应用的时候,有时候应用可以直接启动,但偶尔应用却无法启动,报错信息是: java.sql.SQLRecoverableException: IO Error: Got minus one fro ...
- 二、jdk命令之javah命令(C Header and Stub File Generator)
目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...
- Bootstrap-CL:导航栏
ylbtech-Bootstrap-CL:导航栏 1.返回顶部 1. Bootstrap 导航栏 导航栏是一个很好的功能,是 Bootstrap 网站的一个突出特点.导航栏在您的应用或网站中作为导航页 ...
- WebAPI认证与授权
Web APi之认证(Authentication)及授权(Authorization)[一](十二) http://www.cnblogs.com/CreateMyself/p/4856133.ht ...
- 常见的JS和CSS问题
事件冒泡 DOM的事件冒泡机制和WPF很相似,DOM事件机制包含冒泡和捕获两种,按照topmost element->innermost element方向传递事件被称为捕获方式,而从inner ...
- Python——截取web网页长图
# -*- coding: utf8 -*-import timeimport xlrdfrom selenium import webdriver def read_excel(filename): ...
- 关于python-生成HTMLTestRunner测试报告
一.HTMLTestRunner 是 Python 标准库的 unittest 模块的一个扩展,它可以生成 HTML的 测试报告. 1.首先要下 HTMLTestRunner.py 文件,将下载的文件 ...