.net core利用MySqlBulkLoader大数据批量导入MySQL
2018-03-06 16:18
615 查看
最近用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
相关文章推荐
- C# 使用MySqlBulkLoader 批量导入数据到Mysql
- 利用Excel向MySQL中批量导入数据
- MySQL利用TXT文本批量导入数据
- Mysql的批量导入类 MySqlBulkLoader
- 利用mysql Workbench图形化工具管理mysql,导入与导出数据
- mysql,oracle批量导入数据
- Django向Mysql中批量导入数据
- Elasticsearch —— bulk批量导入数据
- 利用ADO.NET SqlBulkCopy 大批量快速导入数据
- 利用SqlBulkCopy快速大批量导入数据(SqlBulkCopy强大)
- 利用sqoop从mysql向多分区hive表中导入数据
- 利用SqlBulkCopy快速大量导入数据
- Excel函数使用(批量数据导入MySql)
- 把excel中的数据批量导入到mysql数据中
- 2,利用mysql Workbench图形化工具管理mysql,导入与导出数据
- (总结) SQL Server Bulk Insert 批量数据导入
- MySQL中将一个表数据批量导入另一表
- 读取接口XML和批量导入数据SqlBulkCopy
- txt文档批量向MySQL导入数据
- 利用ODBC将数据从SQLServer导入MYSQL(Win7-64位)