知识大全 Oracle数据的批量插入

Posted

篇首语:书本上的知识而外,尚须从生活的人生中获得知识。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle数据的批量插入相关的知识,希望对你有一定的参考价值。

Oracle数据的批量插入  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  前两天接到一个需求——需要编程将SQL Server中的数据插入至Oracle 数据大约有 多万条记录 开始的时候我采取了直接构建SQL插入的方式 结果耗时太长 为了提高性能我上网找了资料 最终采用DataAdapter批量插入至Oracle 提高了性能

  代码如下

  一 直接构建SQL语句插入

    

  VB NET

            sw Start()

            Read Z J from SQL Server

            Dim sqlCmd As New SqlCommand()

            sqlCmd Connection = sqlConnection

            sqlCmd CommandText = SELECT * FROM  Z J

  

            Dim sqlDr As SqlDataReader

            sqlDr = sqlCmd ExecuteReader()

  

            Dim cmdInsertZ J As New OracleCommand()

            cmdInsertZ J Connection = oraConnection

            cmdInsertZ J CommandText = BuildSQLStatement(SQLType Insert z j )

  

            Dim plantLever material oldMaterialNum materialDescription As Object

            While sqlDr Read()

                plantLever = ReadSqlDataReader(sqlDr )

                material = ReadSqlDataReader(sqlDr )

                oldMaterialNum = ReadSqlDataReader(sqlDr )

                materialDescription = ReadSqlDataReader(sqlDr )

                 Insert to Oracle table Z J

                cmdInsertZ J Parameters AddWithValue( :plantLever plantLever)

                cmdInsertZ J Parameters AddWithValue( :material material)

                cmdInsertZ J Parameters AddWithValue( :oldMaterialNum oldMaterialNum)

                cmdInsertZ J Parameters AddWithValue( :materialDescription materialDescription)

                cmdInsertZ J ExecuteNonQuery()

            End While

            sw Stop()

            Loger Info( Reading z j form sql sever used sw Elapsed TotalSeconds ToString())

    

  二 采用DataAdapter实现批量插入

    

  VB NET

            sw Start()

            Read Z J from SQL Server

            Dim sqlCmd As New SqlCommand()

            sqlCmd Connection = sqlConnection

            sqlCmd CommandText = SELECT * FROM  Z J

  

            Dim sqlDr As SqlDataReader

            sqlDr = sqlCmd ExecuteReader()

  

            Dim cmdInsertZ J As New OracleCommand()

            cmdInsertZ J Connection = oraConnection

            cmdInsertZ J CommandText = BuildSQLStatement(SQLType Insert z j )

  

            Dim dtSqlZ J As New DataTable

            dtSqlZ J Columns Add( plantLever )

            dtSqlZ J Columns Add( material )

            dtSqlZ J Columns Add( oldMaterialNum )

            dtSqlZ J Columns Add( materialDescription )

  

            Dim plantLever material oldMaterialNum materialDescription As Object

            While sqlDr Read()

                plantLever = ReadSqlDataReader(sqlDr )

                material = ReadSqlDataReader(sqlDr )

                oldMaterialNum = ReadSqlDataReader(sqlDr )

                materialDescription = ReadSqlDataReader(sqlDr )

                dtSqlZ J Rows Add(plantLever material oldMaterialNum materialDescription)

            End While

            sw Stop()

            Loger Info( Reading z j form sql sever used sw Elapsed TotalSeconds ToString())

  

            sw Start()

            Dim oraDa As New OracleDataAdapter()

            oraDa InsertCommand = cmdInsertZ J

            oraDa InsertCommand Parameters Add( :plantLever OracleType Char plantLever )

            oraDa InsertCommand Parameters Add( :material OracleType Char material )

            oraDa InsertCommand Parameters Add( :oldMaterialNum OracleType Char oldMaterialNum )

            oraDa InsertCommand Parameters Add( :materialDescription OracleType Char materialDescription )

  

            oraDa InsertCommand UpdatedRowSource = UpdateRowSource None

            oraDa UpdateBatchSize =     Adjust the batch size based on testing result

  

            oraDa Update(dtSqlZ J)

            sw Stop()

cha138/Article/program/Oracle/201311/18480

相关参考

知识大全 oracle中利用merge语句防止重复插入

  由于项目中需要用到批量插入为了防止用户插入重复的数据需要先判断插入的数据是不是已经存在如果存在则忽略这次插入否则插入这条数据刚开始的时候是先用一条SQL语句判断如果返回结果是真(记录已经存在)则忽

知识大全 数据批量导入Oracle数据库

数据批量导入Oracle数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQL*LOADE

知识大全 数据批量sql*load导入Oracle数据库

数据批量sql*load导入Oracle数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  S

知识大全 Oracle BULK COLLECT批量取数据解决方法

OracleBULKCOLLECT批量取数据解决方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 ADO.Net实现Oracle大批量数据的更新优化

ADO.Net实现Oracle大批量数据的更新优化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 学在oracle数据库中插入特殊符号

  oracle特殊字符的插入    环境配置:    server:linux    dbserver:oracle    clientos:windowspro    oracleclient:o

知识大全 Oracle循环向数据库中插入记录

Oracle循环向数据库中插入记录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  declare

知识大全 oracle的多表插入

  在业务处理过程中经常会碰到将业务数据按照条件分别插入不同的数据表的问题按照传统的处理方式需要分条件执行多次检索后分别插入不同的表单这样因为执行了重复的检索造成cpu和内存的浪费从oraclei开始

知识大全 创建索引选择合适的可选项

  有些新手在Oracle数据库中创建索引时往往不会使用可选项其实有时候在合适的场合使用一些可选项可以提高索引的创建速度如为了大批量导入数据我们往往会先取消索引其以提高插入的速度然后等数据导入完毕后再

知识大全 Hibernate的批量处理-批量插入

Hibernate的批量处理-批量插入  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hiber