MySqlBulkLoader后数据库出现0000-00-00 00:00:00数据问题
来源:互联网 发布:淘宝助理历史版本 编辑:程序博客网 时间:2024/05/10 16:55
//这是在.Net中使用MySqlBulkLoader
//为什么使用MySqlBulkLoader,因为 20多万数据,导入数据库就几秒而已,一个字:快!其他的批量插入基本都比这种方法慢。
//CsvWriter 使用的是CSVHelper类库
string tmpPath = Path.GetTempFileName();
using (var csv = new CsvWriter(new StreamWriter(tmpPath)))
{
csv.WriteRecords(data);
}
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
//MySqlTransaction tran = null;
try
{
conn.Open();
//tran = conn.BeginTransaction();
MySqlBulkLoader bulk = new MySqlBulkLoader(conn)
{
FieldTerminator = ",",
FieldQuotationCharacter = '"',
EscapeCharacter = '"',
LineTerminator = "\r\n",
FileName = tmpPath,
NumberOfLinesToSkip = 1,
TableName = tableName,
};
//bulk.Columns.AddRange(table.Columns.Cast<DataColumn>().Select(colum => colum.ColumnName).ToList());
insertCount = bulk.Load();
//tran.Commit();
}
catch (MySqlException ex)
{
//if (tran != null) tran.Rollback();
throw ex;
}
}
File.Delete(tmpPath);
保存时,如果为空,默认会变成 0000-00-00 00:00:00。
如果是这样,那也没问题,再一条语句更新为null就行了,关键问题在下面:
SELECT * FROM ripeorderdetailreportdata WHERE OrderCreateDate ='0000-00-00 00:00:00';
可以查出数据。
1 queries executed, 0 success, 1 errors, 0 warnings
UPDATE ripeorderdetailreportdata SET OrderCreateDate = NULL WHERE OrderCreateDate ='0000-00-00 00:00:00'
错误代码: 1292
Incorrect datetime value: '0000-00-00 00:00:00' for column 'OrderCreateDate' at row 1
执行耗时 : 0 sec
传送时间 : 0 sec
总耗时 : 0.001 sec
猜测这可能是 MySqlBulkLoader 导致的问题。
但有个解决办法 ,就是在值为空时,显式赋值 DateTime.MinValue ,查了值是 0001-01-01 00:00:00 ,这样,后面再去更新字段为null,就ok了,更新也快,基本在1秒内完成,没报错。
更新:2016-08-11
解决方案:用一个dto model类转换,相关字段改成string
由于 DataTime? 可空类型,csv生成时会直接为空,例如:
123,,‘张三’
如果用一个另外一个dto类转换,把相同的字段,转换成string,那么值为空时,生成的csv文件格式如下:
123,NULL,‘张三’
这样bulk load插入数据库就会是空,而不是0000-00-00 00:00:00,这样就ok了。
- MySqlBulkLoader后数据库出现0000-00-00 00:00:00数据问题
- mysql写入数据库后,数据出现乱码问题的解决方案
- 【数据库】MySqlBulkLoader——批量导入
- 数据插入数据库后出现乱码解决方案
- 从数据库中取数据vo接收后展示出现的问题
- 如何解决数据保存数据库后出现中文变"?"的问题
- 去掉数据库中date类型的日期数据导出到Excel后多余的 0:00:00
- C# 使用MySqlBulkLoader 批量导入数据到Mysql
- 关于数据库插入数据出现乱码问题
- 向数据库传输数据出现乱码问题
- [数据库]:navicat导入数据后出现中文乱码
- 手机ROOT后数据出现问题怎么还原
- DoModal()后出现问题。
- 安装Oracle10G数据库实例后安装ODT11G后出现的问题
- 关于数据传入数据库后变为乱码的问题
- 将数据写入ACCESS数据库时,出现的问题
- 解决jsp插入mysql数据库中的数据出现乱码问题
- 解决jsp插入数据库中的数据出现乱码问题
- LINQ基本语法整理(一)
- Android Studio导入基于Eclipse的第三方库(ViewPagerIndicator)
- java中浮点数的计算
- nyoj 289 苹果
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
- MySqlBulkLoader后数据库出现0000-00-00 00:00:00数据问题
- 值得你关注的Android6.0上的重要变化
- python之字典
- 通过蓝牙智能硬件学习到的一些东西
- IO操作系列函数
- django patterns使用方式
- ETL,OLAP,OLTP,DM概述
- 锂电池的六个主要参数
- AndroidAnnotations开发框架使用详解