Oracle支持批量操作方案
Oracle支持批量操作方案
方案管理
变更记录
日期(Date) | 作者(Author) | 旧版本(Old Version) | 新版本(New Version) | 备注(Remarks) |
---|---|---|---|---|
审阅记录
日期(Date) | 姓名(Name) | 职务(Position) | 版本(Version) | 签字(Signature) |
---|---|---|---|---|
一、方案简介
- 方案背景
- 目前项目版本为.NET5 ,没有适配的对应Oracle环境的批量插入的扩展,为了实现在项目中对oracle环境的批量操作的功能
二、方案目标
- 具体目标
- 实现在.NET5项目环境下对Oracle数据库进行批量插入修改删除操作
- 意义
- 提高项目在大数据进行功能操作时的性能
三、准备工作
- **时间:**2月7日 09:00
- 参与人:
- 审核者与方案制定
- @** @**
- 方案实施者
- @**
- 方案验收者
- @** @**
- 审核者与方案制定
- 资料支持
- EFCore.BulkExtensions包支持.NET6版本源码
- FreeSql中oracle批量插入的实现
- 源码地址
- 文档地址
- oracle的OracleBulkCopy使用
- https://www.bbsmax.com/A/RnJWK41EJq/
- https://blog.csdn.net/baidu_27474941/article/details/71712295
- ORACLE的SQL语句
- oracleSql中
merge
语法借助资料- 资料链接
- oracleSql中临时表创建借助资料
- 资料链接
- 创建临时表
-复制现有表创建临时表CREATE GLOBAL TEMPORARY TABLE newTableName ON COMMIT PRESERVE ROWS AS SELECT* FROM existingTableName WHERE 1 = 2;
- 有异常处理删除临时表
BEGIN EXECUTE IMMEDIATE 'TRUNCATE TABLE tableName'; EXECUTE IMMEDIATE 'DROP TABLE tableName PURGE'; EXCEPTION WHEN OTHERS THEN NULL;END;
- oracleSql中
四、计划安排
- 人天安排
- Oracle批量操作方案
- **
EFCore.BulkExtensions
**开源库.Net6版本适配Oracle的操作 - .NET6完成批量实现迁移到.NET5版本**
EFCore.BulkExtensions
**开源库及.NET5环境的适配- Oracle、Mysql、PostgreSql
- 发布批量操作的私有包
- .NET5版本批量操作发出Nuget包,项目中使用发布的私有包进行测试
- Oracle、Mysql、PostgreSql
五、方案实施
- 具体细节
- 分析**
EFCore.BulkExtensions
**开源库.Net6版本的SqlServer
批量实现方式 - 通过.NET6版本SqlServer的实现完成对
Oracle
的批量实现方式 - 对在.NET6完成
ORACLE
进行批量增删改实现 - .NET6批量实现迁移到.NET5版本**
EFCore.BulkExtensions
**开源库的分支,做.NET5环境的适配- Oracle、Mysql、PostgreSql 数据库的支持
- 对迁移到.NET5版本的Oracle批量操作私有Nuget包。名称**
GCT.EFCore.BulkExtensions
** - 在项目中使用发布的包进行测试
- 分析**
六、风险评估
- 可能会出现的难点
- oracle的OracleBulkCopy使用方法
- ORACLE的SQL语句不熟悉
- .NET6环境迁移到.NET5环境会存在方法等多种不适配的问题
- Oracle
- Postgresql
- Mysql
- 风险评估
七、注意事项
- .Net6**
EFCore.BulkExtensions
**开源库拥有PostgreSql和MySql的适配,需要迁移做.NET5的适配
八、验收标准
- 验收对象
- medpro产品组
- 验收前提条件
- 已发布私有包完成
- 验收方法
- 检验medpro产品使用到批量操作的事务操作
- 验收标准
- 事务操作成功
九、补充方案(备用方案)
- 项目后续如果需要适配其他国内的数据库,基于**
EFCore.BulkExtensions
** 包耦合性深,进行扩展其他数据库会出现一些其他异常,是否考虑搭建公司内部私有数据库批量操作库? - 通过现有开发完成的.NET5的oracle提交PR给官方开源库,后续使用开源包