MySQL驱动:MySqlConnector

GitHub地址:https://github.com/mysql-net/MySqlConnector.git

文档地址:https://mysql-net.github.io/MySqlConnector/

代码插入之后发现出现中文乱码现象。

原来的代码逻辑简略版

实现逻辑梳理,将数组写入csv,通过MySqlBulkLoader批量插入

        public async Task BulkLoadLocalCsvFile<T>(IEnumerable<T> dataSource, string tableName)
{
using (var connection = new MySqlConnection(GetLocalConnectionString()))
{
await connection.OpenAsync();
var path = Path.GetTempFileName();
MySqlBulkLoader bl = new MySqlBulkLoader(connection);
bl.FileName = path;
bl.TableName = tableName;
bl.FieldTerminator = ",";
bl.FieldQuotationCharacter = '"';
bl.FieldQuotationOptional = true;
bl.Local = true;
using (var writer = new StreamWriter(path))
{
var configuration = new Configuration
{
HasHeaderRecord = false,
};
using (var csv = new CsvWriter(writer, configuration))
{
csv.WriteRecords(dataSource);
var writerConfiguration = csv.Context.WriterConfiguration;
var map = writerConfiguration.Maps.Find<T>();
foreach (var memberMap in map.MemberMaps)
{
var memberName = memberMap.Data.Member.Name;
loader.Columns.Add(memberName);
}
}
}
int rowCount = await bl.LoadAsync();
File.Delete(path);
}
}

分析乱码原因

  • 需要指定csv文件的字符集
  • 需要指定StreamWriter字符集
  • 需要指定MySqlBulkLoader字符集

指定csv文件的字符集

写CSV文件借助的是开源包CsvHelper。

CsvHelper

指定 CsvHelper.Configuration.Configuration字符集

var configuration = new Configuration
{
Encoding = Encoding.UTF8
};

没能解决。

指定StreamWriter字符集

var writer = new StreamWriter(path, true, Encoding.UTF8)

不行。

指定MySqlBulkLoader字符集

bl.CharacterSet = "UTF8";

乱码解决。

最新文章

  1. 手机浏览器浏览WebApp弹出的键盘遮盖住文本框的解决办法
  2. IOS远程推送
  3. 如何使用Math对象快速计算数组中的最大值或最小值
  4. 这些年正Android - 母亲
  5. post请求报文
  6. class.equals
  7. datawindow 创建操作报表。
  8. Learning c section 1
  9. Embedded Database service fails to start after installing or migrating to Symantec Endpoint Protection (SEP) 12.1.5 (RU5)
  10. Ext.grid.plugin.RowExpander的简单用法
  11. Dom操作的分类
  12. 不用Unity库,自己实现.NET轻量级依赖注入
  13. if语句写在while语句外面效率更高
  14. android开发之路01
  15. struts2错误验证
  16. .NET Core项目从xproj+project.json向csproj迁移简介
  17. pyqt5 动画学习(三) 指定控件的移动轨迹
  18. 8.Vue基础
  19. Tesseract 模块
  20. 玩转X-CTR100 l STM32 l STM32F4 l 蓝牙串口通信

热门文章

  1. C++入门到理解阶段二基础篇(9)——C++结构体
  2. 如何使用1行代码让你的C++程序控制台输出彩色log信息
  3. NFS文件系统及搭建NFS共享服务
  4. VUE Base64编码图片展示与转换图片
  5. 通过修改VAD属性破除锁页机制
  6. Xcode 中配置 clang-format 格式化 C++ 代码
  7. python爬虫网页解析之lxml模块
  8. Reuse Implemented Functionality 重用实现功能
  9. css知识笔记:垂直居中(别只看,请实操!!!)
  10. 从华为“鸿蒙”备胎看IT项目建设