MySqlBulkLoader 中文乱码
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
- GitHub地址:https://github.com/JoshClose/CsvHelper
- nuget地址:https://www.nuget.org/packages/CsvHelper/12.1.2
指定 CsvHelper.Configuration.Configuration
字符集
var configuration = new Configuration
{
Encoding = Encoding.UTF8
};
没能解决。
指定StreamWriter字符集
var writer = new StreamWriter(path, true, Encoding.UTF8)
不行。
指定MySqlBulkLoader字符集
bl.CharacterSet = "UTF8";
乱码解决。
MySqlBulkLoader 中文乱码的更多相关文章
- java中文乱码解决之道(一)-----认识字符集
沉寂了许久(大概有三个多月了吧),LZ"按捺不住"开始写博了! java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要么是按照以前的经验修改,要么则是baidu.c ...
- MAC下 mysql不能插入中文和中文乱码的问题总结
MAC下 mysql不能插入中文和中文乱码的问题总结 前言 本文中所提到的问题解决方案,都是基于mac环境下的,但其他环境,比如windows应该也适用. 问题描述 本文解决下边两个问题: 往mysq ...
- java中文乱码解决之道(九)-----总结
乱码,我们前台展示的杀手,可能有些朋友和我的经历一样:遇到乱码先按照自己的经验来解决,如果没有解决就google,运气好一搜就可以解决,运气不好可能够你折腾一番了.LZ之所以写这个系列博客就是因为遇到 ...
- 解决springmvc+mybatis+mysql中文乱码问题【转】
这篇文章主要介绍了解决java中springmvc+mybatis+mysql中文乱码问题的相关资料,需要的朋友可以参考下 近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文 ...
- freemarker页面中文乱码
一.前言 简单的记录freemarker遇到的错误问题:ftl页面中文乱码 由于freemarker整合在ssm框架中,所以笔者直接贴配置代码 <beans xmlns="http:/ ...
- tomcat项目中文乱码问题解决方法
在部署tomcat项目时经常会遇到中文乱码问题,解决的方法可参考以下步骤. 1.更改Tomcat安装目录下的conf\server.xml,指定浏览器的编码格式为"utf-8"格式 ...
- IE下get传中文乱码的问题 -- 解决方案 (js)
W3school 函数 JavaScript 全局对象 定义和用法 encodeURI() 函数可把字符串作为 URI 进行编码. 语法 encodeURI(URIstring) 参数 描述 URIs ...
- JSP和Servlet的中文乱码处理
JSP和Servlet的中文乱码处理 前几天学习了JSP和Servlet中有关中文乱码的一些问题,写成了博客,今天进行更新一下.应该是可以解决日常的乱码问题了.现在作以下总结希望对需要的人有所帮助.我 ...
- Git bash下中文乱码问题
Git bash下中文乱码--解决方案 解决办法1: 在git bash下,右键 出现下图,选择options: 选择"Text" 将Character set设置为 UTF-8 ...
随机推荐
- Deepnude算法“tuo”衣服
PS:我不是偷窥狂.我是技术的爱好者 换脸视频后AI又出偏门应用:用算法“tuo”女性衣服 据美国科技媒体Motherboard报道,一名程序员最近开发出一款名叫DeepNude的应用,只要给Deep ...
- ros2中创建一个python package
完整的python package的目录结构如下: source /opt/ros/dashing/setup.bash cd ros2_ws/src && ros2 pkg crea ...
- c#时间戳相互转换
/// <summary> /// 获取时间戳 /// </summary> /// <returns></returns> public static ...
- 理解并运用TP5.1-Facade
1.内容介绍 深入解析tp5.1与laravel 中Facade底层原理实现 1. 什么是Facade 2. 为什么需要有什么好处 3. Facade实现原理 4. 功能实现. 5. 容器注入 2. ...
- python自带编译器在写入文件时闪退,或者一步步执行到写入时提示8170。解决办法:
用python黑框运行程序写入文件时闪退,或一行行运行到写入时提示8170数字. 经试验,为文件路径错误导致. with open("1.doc", "wb") ...
- python链式调用REST API把参数放到URL中
需求格式:GET /users/:user/repos 程序: class Chain(object): def __init__(self,path=''): self._path=path def ...
- CentOS 7安装配置MySQL 5.7
概述 前文记录了在Windows系统中安装配置MySQL 5.7(前文连接:https://www.cnblogs.com/Dcl-Snow/p/10513925.html),由于安装部署大数据环境需 ...
- HTML5☞canvas
<canvas>便签用于绘制图像,图表.不过,<canvas> 元素本身并没有绘制能力(它仅仅是图形的容器) - 您必须使用脚本JavaScript来完成实际的绘图任务.既然你 ...
- 微信小程序之文件系统初探
微信小程序之文件系统初探 1.文件下载 //下载文件 go_download: function() { var content = this; var baseUrl = "http:// ...
- Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法
Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法 2018/11/06 Chenxin 资料说明 Django基础入 ...