一个OracleBulkCopy
对象有效地从另一个数据源加载或复制数据到Oracle表中。
System.Object
System.OracleBulkCopy
// C# 公开封装类OracleBulkCopy:IDisposable
所有公共静态方法都是线程安全的,虽然实例方法不能保证线程安全。
本OracleBulkCopy
类可用于将数据写入到只有Oracle数据库表。但是,数据源不限于Oracle数据库; 只要可以将数据加载到DataTable
实例或用IDataReader
实例读取,就可以使用任何数据源。
命名空间: Oracle.DataAccess.Client
部件: Oracle.DataAccess.dll
ODP.NET版本:适用于.NET Framework 2.0的ODP.NET或.NET Framework 4的ODP.NET
也可以看看:
OracleBulkCopy成员
OracleBulkCopy
成员列在下表中。
OracleBulkCopy
构造函数列在表17-1中。
OracleBulkCopy
属性列于表17-2。
属性 | 描述 |
---|---|
指定要作为批处理发送到数据库的行数 | |
指定确定 | |
指定批量复制操作在中止之前完成的秒数 | |
指定数据源和目标表之间的列映射 | |
指定 | |
指定加载数据的数据库表 | |
定义生成通知事件之前要处理的行数 |
OracleBulkCopy
公共方法列于表17-3。
OracleBulkCopy
事件列于表17-4。
OracleBulkCopy构造函数
OracleBulkCopy
构造函数创建OracleBulkCopy
类的新实例。
-
OracleBulkCopy(的OracleConnection)
此构造
OracleBulkCopy
函数使用指定的连接和默认值实例化一个新的类实例OracleBulkCopyOptions
。 -
此构造函数
OracleBulkCopy
根据提供的connectionString
默认值实例化一个新的实例OracleBulkCopyOptions
。 -
OracleBulkCopy(OracleConnection,OracleBulkCopyOptions)
此构造函数实例化
OracleBulkCopy
使用指定的连接对象和OracleBulkCopyOptions
值的新实例。 -
OracleBulkCopy(string,OracleBulkCopyOptions)
这个构造函数
OracleConnection
根据提供的connectionString
和OracleBulkCopyOptions
值来实例化一个新的实例。
OracleBulkCopy(的OracleConnection)
该构造OracleBulkCopy
函数使用指定的连接和默认OracleBulkCopyOptions
枚举值实例化一个新的类实例。
// C# 公共OracleBulkCopy(OracleConnection 连接);
-
connection
该打开的实例
OracleConnection
执行批量复制操作。
ArgumentNullException
- 连接参数为null。
InvalidOperationException
- 连接不处于打开状态。
传递给此构造函数的连接对象必须是打开的。OracleBulkCopy
实例关闭后仍保持打开状态。
此构造函数使用默认枚举值OracleBulkCopyOptions.Default
。
该Connection
属性设置为提供的连接。
OracleBulkCopy(串)
该构造OracleBulkCopy
函数通过首先OracleConnection
根据提供的对象创建一个对象connectionString
,然后OracleBulkCopy
使用OracleConnection
对象和OracleBulkCopyOptions
默认值初始化新对象来实例化一个新的实例。
// C# public OracleBulkCopy(string connectionString);
-
connectionString
用于连接到Oracle数据库并执行批量复制操作的连接信息。
ArgumentNullException
- connectionString
参数为null。
ArgumentException
- connectionString
参数为空。
该WriteToServer
方法打开连接,如果尚未打开。当OracleBulkCopy
实例关闭时,连接将自动关闭。
此构造函数使用默认枚举值OracleBulkCopyOptions.Default
。
该Connection
属性设置为OracleConnection
使用提供的初始化对象connectionString
。
OracleBulkCopy(OracleConnection,OracleBulkCopyOptions)
此构造函数实例化OracleBulkCopy
使用指定的连接对象和OracleBulkCopyOptions
值的新实例。
// C# public OracleBulkCopy(OracleConnection 连接,OracleBulkCopyOptions copyOptions);
-
connection
OracleConnection
执行批量复制操作的对象的打开实例。 -
copyOptions
OracleBulkCopyOptions
确定OracleBulkCopy
对象行为的枚举值的组合。
ArgumentNullException
- connection
参数为null。
InvalidOperationException
- 连接不处于打开状态。
传递给此构造函数的连接必须是打开的。OracleBulkCopy
实例关闭后仍保持打开状态。
该Connection
属性设置为提供的连接。
OracleBulkCopy(string,OracleBulkCopyOptions)
该构造OracleBulkCopy
函数通过首先OracleConnection
根据提供的对象创建一个对象connectionString
,然后OracleBulkCopy
使用OracleConnection
对象和提供的OracleBulkCopyOptions
枚举值初始化新对象来实例化一个新的实例。
// C# public OracleBulkCopy(string connectionString,OracleBulkCopyOptions copyOptions);
-
connectionString
用于连接到Oracle数据库以进行批量复制操作的连接信息。
-
copyOptions
OracleBulkCopyOptions
确定批量复制操作行为的枚举值的组合。
ArgumentNullException
- connectionString
为空。
ArgumentException
- connectionString
参数为空。
构造函数使用类的新实例OracleConnection
来初始化类的新实例OracleBulkCopy
。的OracleBulkCopy
实例,根据在所提供的选项的行为copyOptions
参数。
当OracleBulkCopy
实例关闭时,连接将自动关闭。
该Connection
属性设置为OracleConnection
使用提供的初始化对象connectionString
。
OracleBulkCopy属性
OracleBulkCopy
属性列在表17-5中。
属性 | 描述 |
---|---|
指定要作为批处理发送到数据库的行数 | |
指定确定 | |
指定批量复制操作在中止之前完成的秒数 | |
指定数据源和目标表之间的列映射 | |
指定 | |
指定加载数据的数据库表 | |
定义生成通知事件之前要处理的行数 |
BATCHSIZE
此属性指定要作为批处理发送到数据库的行数。
// C# public int BatchSize {get; 组;}
要作为批次发送到数据库的行数的整数值。
ArgumentOutOfRangeException
- 批量大小小于零。
默认值为零,表示行不会批量发送到数据库。整组行都以单个批次发送。
当BatchSize
处理行数或没有更多行发送到数据库时,批处理完成。
-
如果指定
BatchSize
>
0
了UseInternalTransaction
批量复制选项,则批量复制操作的每批都将在事务中进行。如果用于执行批量复制操作的连接已经是事务的一部分,InvalidOperationException
则会引发异常。 -
如果没有指定
BatchSize
>
0
该UseInternalTransaction
选项,则会以批量的大小将行发送到数据库BatchSize
,但不会执行与事务相关的操作。
该BatchSize
属性可以在任何时候进行设置。如果批量拷贝已在进行中,则当前批量大小由先前的批量大小确定。后续批次使用新的批量大小。
如果BatchSize
属性最初为零,并且WriteToServer
在操作正在进行中更改,则该操作将数据作为单个批次加载。WriteToServer
在同一OracleBulkCopy
实例上的任何后续操作都使用新的BatchSize
。
BulkCopyOptions
此属性指定确定OracleBulkCopyOptions
批量复制选项行为的枚举值。
// C# public OracleBulkCopyOptions BulkCopyOptions {get; 组;}
该OracleBulkCopyOptions
枚举对象定义批量复制操作的行为。
ArgumentNullException
- 批量复制选项集为空。
此属性的默认值为OracleBulkCopyOptions.Default
值。此属性可用于更改批量复制操作批次之间的批量复制选项。
BulkCopyTimeout
此属性指定批量复制操作在中止之前完成的秒数。
// C# public int BulkCopyTimeout {get; 组;}
批量复制操作超时之后的秒数的整数值。
ArgumentOutOfRangeException
- 超时值设置为小于零。
默认值为30秒。
如果BatchSize
>0
,以前批次中发送到数据库的行仍然提交。当前批处理的行不会发送到数据库。如果BatchSize=0
没有行发送到数据库。
ColumnMappings
此属性指定数据源和目标表之间的列映射。
// C# public OracleBulkCopyColumnMappingCollection ColumnMappings {get;}
OracleBulkCopyColumnMappingCollection
定义源表和目标表之间的列映射的对象。
所述ColumnMappings
集合是不必要的,如果数据源和目标表具有相同的列数,并且每个源列的顺序位置对应的目标的列的顺序位置相匹配。但是,如果列计数不同或顺序位置不一致,则ColumnMappings
必须使用该集合来确保将数据复制到正确的列中。
在执行批量复制操作期间,可以访问此集合,但无法更改。
默认情况下,此属性指定列映射的空集合。
连接
此属性指定OracleConnection
Oracle数据库用于执行批量复制操作的对象。
// C# public OracleConnection Connection {get; }
OracleConnection
用于批量复制操作的对象。
OracleBulkCopy
如果OracleBulkCopy
对象使用连接字符串进行初始化,则该属性将获取构造的连接。
DestinationTableName
该属性指定数据加载到的数据库表。
// C# public string DestinationTableName {get; 组;}
用于标识目标表名称的字符串值。
ArgumentNullException
- 目标表名称设置为null。
ArgumentException
- 目标表名称为空。
如果操作正在运行DestinationTableName
时修改WriteToServer
,则更改不会影响当前操作。DestinationTableName
下一次WriteToServer
调用一个方法时会使用新值。
OracleBulkCopy公共方法
OracleBulkCopy
方法见表17-6。
关
此方法关闭OracleBulkCopy
实例。
// C# public void Close();
InvalidOperationException
- 该Close
方法是从一个OracleRowsCopied
事件调用的。
在Close
方法调用OracleBulkCopy
对象之后,没有其他操作可以成功。调用该WriteToServer
方法抛出一个InvalidOperationException
。Close
如果连接被OracleBulkCopy
对象打开,则该方法将关闭连接,也就是说,如果该OracleBulkCopy
对象是由一个连接字符串构造函数创建的。
部署
此方法释放对象分配的任何资源或内存。
// C# public void Dispose();
IDisposable
在Dispose
方法调用该OracleBulkCopy
对象之后,没有其他操作可以成功。如果OracleBulkCopy
对象打开连接,即连接字符串创建OracleBulkCopy
对象的构造函数,连接将关闭。
在WriteToServer
WriteToServer
将行复制到目标表。
-
此方法将所提供的
DataRow
数组中的所有行复制到由对象的DestinationTableName
属性指定的OracleBulkCopy
目标表。 -
此方法将所提供的所有行复制
DataTable
到由对象的DestinationTableName
属性指定的OracleBulkCopy
目标表中。 -
此方法将所提供的所有行复制
IDataReader
到由对象的DestinationTableName
属性指定的OracleBulkCopy
目标表中。 -
WriteToServer(DataTable,DataRowState)
此方法复制与提供
DataTable
给由对象的DestinationTableName
属性指定的OracleBulkCopy
目标表中提供的行状态相匹配的行。 -
在WriteToServer(OracleRefCursor)
此方法将所有从指定的行复制
OracleRefCursor
到由对象的DestinationTableName
属性指定的OracleBulkCopy
目标表。
在WriteToServer(的DataRow [])
此方法将所提供的DataRow
数组中的所有行复制到由对象的DestinationTableName
属性指定的OracleBulkCopy
目标表。
// C# public void WriteToServer(DataRow [] rows);
-
rows
DataRow
要复制到目标表的对象数组。
ArgumentNullException
- rows
参数为null。
InvalidOperationException
- 连接不处于打开状态。
该ColumnMappings
集合从映射DataRow
列到目标数据库表。
在WriteToServer(数据表)
此方法将所提供的所有行复制DataTable
到由对象的DestinationTableName
属性指定的OracleBulkCopy
目标表中。
// C# public void WriteToServer(DataTable table);
-
table
源
DataTable
包含要复制到目标表的行。
ArgumentNullException
- table
参数为null。
InvalidOperationException
- 连接不处于打开状态。
所有行都DataTable
被复制到目标表,除了那些被删除的行。
该ColumnMappings
集合从映射DataTable
列到目标数据库表。
在WriteToServer(IDataReader的)
此方法将所提供的所有行复制IDataReader
到由对象的DestinationTableName
属性指定的OracleBulkCopy
目标表中。
// C# public void WriteToServer(IDataReader reader);
-
reader
包含
IDataReader
要复制到目标表的行的实例。
ArgumentNullException
- reader
参数为null。
InvalidOperationException
- 连接不处于打开状态。
批量复制操作从数据读取器的下一个可用行开始。通常,reader
通过调用该ExecuteReader
方法返回的方法将传递给该WriteToServer
方法,以便下一行成为第一行。要复制多个结果集,应用程序必须调用NextResult
上reader
,然后调用WriteToServer
再次方法。
该WriteToServer
方法在内部调用reader.Read
以获取源行时更改读取器的状态。因此,在结束时WriteToServer
操作时,reader
是在结果集的末尾。
该ColumnMappings
集合从数据读取列到目标数据库表映射。
WriteToServer(DataTable,DataRowState)
此方法复制与提供DataTable
给由对象的DestinationTableName
属性指定的OracleBulkCopy
目标表中提供的行状态相匹配的行。
// C# public void WriteToServer(DataTable 表,DataRowState rowState);
-
table
甲
DataTable
含有行被复制到目标表。 -
rowState
该
DataRowState
枚举值。只有匹配行状态的行被复制到目标。
ArgumentNullException
- table
或rowState
参数为null。
InvalidOperationException
- 连接不处于打开状态。
DataTable
在rowState
参数中指示的并且尚未被删除的状态中的行只被复制到目标表。
该ColumnMappings
集合从映射DataTable
列到目标数据库表。
在WriteToServer(OracleRefCursor)
此方法将所有从指定的行复制OracleRefCursor
到由对象的DestinationTableName
属性指定的OracleBulkCopy
目标表。
// C# public void WriteToServer(OracleRefCursor refCursor);
-
refCursor
OracleRefCursor
包含要复制到目标表的行的对象。
ArgumentNullException
- refCursor
参数为null
InvalidOperationException
- 连接不处于打开状态。
该ColumnMappings
集合从映射OracleRefCursor
列到目标数据库表。
OracleBulkCopy事件
OracleBulkCopy
事件列于表17-7。