Oracle:EFCore使用OracleBulkCopy实现批量导入数据|C/S开发框架

Oracle:EFCore使用OracleBulkCopy实现批量导入数据
CSFramework.EF.OracleDatabase
BulkInsert 方法:
C# 全选
public int BulkInsert<T>(List<T> entities, string tableName = null)
{
if (String.IsNullOrEmpty(tableName))
{
var tableAttribute = (TableAttribute)typeof(T).GetCustomAttributes(typeof(TableAttribute), false).First();
tableName = $"\"{tableAttribute.Name}\"";
}
using (OracleBulkCopy bulkCopy = new OracleBulkCopy(ConnectionString))
{
bulkCopy.BulkCopyTimeout = 0;
bulkCopy.BatchSize = entities.Count;
bulkCopy.DestinationTableName = tableName;
bulkCopy.BulkCopyOptions = OracleBulkCopyOptions.UseInternalTransaction | OracleBulkCopyOptions.Default;
var table = DataTableHelper.ToDataTable<T>(entities);
table.TableName = tableName;
//重要:记录设置为新增状态
foreach (DataRow r in table.Rows) r.SetAdded();
bulkCopy.WriteToServer(table);
return table.Rows.Count;
}
}测试代码
C# 全选
IDatabase db = DatabaseFactory.GetDatabase(GetDatabaseType(), GetConfig("Normal").ConnectionString);
var watch = Stopwatch.StartNew();
var list = new List<_Demo_Customer>();
for (int i = 1; i <= 1000; i++)
{
list.Add(NewCustomer());
}
//调用IDatabase.BulkInsert方法
int x = db.BulkInsert<_Demo_Customer>(list);
watch.Stop();
int count = db.GetQueryable<_Demo_Customer>().Count();
var msg = $"成功:{x},总记录数:{count},用时:{watch.ElapsedMilliseconds}(ms)";
ShowResult("测试BulkInsert方法 -> 结果:" + msg);测试结果
测试BulkInsert方法 -> 结果:成功:1000,总记录数:8562,用时:115(ms)
----------
测试BulkInsert方法 -> 结果:成功:1000,总记录数:7562,用时:113(ms)
----------
测试BulkInsert方法 -> 结果:成功:1000,总记录数:6562,用时:248(ms)
----------
测试BulkInsert方法 -> 结果:成功:1000,总记录数:5562,用时:134(ms)
----------
测试BulkInsert方法 -> 结果:成功:1000,总记录数:4562,用时:1250(ms)

参考文档:
EFCore+.NET8:使用Oracle数据库提交大图片文件需要指定BLOB类型|C/S开发框架
Oracle数据库名称有小数点,使用expdp备份失败:ORA|12154: TNS: 无法解析指定的连接标识符|C/S开发框架
ORACLE 使用 expdp 命令导出dmp数据库文件|C/S开发框架
使用.NET8/EFCore访问达梦数据库|C/S框架网|C/S开发框架
EFCore报错:OracleException: ORA|01465: 无效的十六进制数字|C/S开发框架
.NETCore使用EF保存图片报错:OracleExceptiol: ORA|01460:转换请求无法实施或不合理|C/S开发框架
使用System.Data.OracleClient组件搭建Oracle数据库连接获取DataTable|C/S开发框架
EFCore+LINQ 使用DebugView查看LINQ转译后的原生SQL|C/S开发框架
C/S软件授权注册系统V3.0(Winform+WebApi+.NET8+EFCore版本)|C/S开发框架
CSFrameworkV6软件开发框架 | Oracle数据库测试报告|C/S开发框架
企业级C/S系统快速开发框架(Winform+.NET8+EFCore)|C/S开发框架
最新MES系统快速开发平台(Winform+NET8+EFCore)|C/S开发框架
EFCore+Scheme(数据库架构)实现分库分表支持多种主流数据库解决方案|C/S开发框架
达梦数据库使用DmBulkCopy批导数据解决方案|C/S开发框架
OracleException:“ORA|00942: 表或视图不存在”解决方案|C/S开发框架
WinFormsApp窗体应用快速开发框架(.NET7+EFCore+VS2022)
EFCore+.NET8:使用Oracle数据库提交大图片文件需要指定BLOB类型|C/S开发框架
Oracle数据库名称有小数点,使用expdp备份失败:ORA|12154: TNS: 无法解析指定的连接标识符|C/S开发框架
ORACLE 使用 expdp 命令导出dmp数据库文件|C/S开发框架
使用.NET8/EFCore访问达梦数据库|C/S框架网|C/S开发框架
EFCore报错:OracleException: ORA|01465: 无效的十六进制数字|C/S开发框架
.NETCore使用EF保存图片报错:OracleExceptiol: ORA|01460:转换请求无法实施或不合理|C/S开发框架
使用System.Data.OracleClient组件搭建Oracle数据库连接获取DataTable|C/S开发框架
EFCore+LINQ 使用DebugView查看LINQ转译后的原生SQL|C/S开发框架
C/S软件授权注册系统V3.0(Winform+WebApi+.NET8+EFCore版本)|C/S开发框架
CSFrameworkV6软件开发框架 | Oracle数据库测试报告|C/S开发框架
企业级C/S系统快速开发框架(Winform+.NET8+EFCore)|C/S开发框架
最新MES系统快速开发平台(Winform+NET8+EFCore)|C/S开发框架
EFCore+Scheme(数据库架构)实现分库分表支持多种主流数据库解决方案|C/S开发框架
达梦数据库使用DmBulkCopy批导数据解决方案|C/S开发框架
OracleException:“ORA|00942: 表或视图不存在”解决方案|C/S开发框架
WinFormsApp窗体应用快速开发框架(.NET7+EFCore+VS2022)
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
