我目前正在使用 OCI 从 C++ 代码中将记录一个接一个地插入到表中。数据在结构的哈希映射中,我遍历映射的元素,将结构的属性绑定到表中记录的列(例如
定义插入查询 对记录的所有列使用 OCIBindByname( ) 迭代映射分配绑定变量作为结构 OCIStmtExecute 的属性 end
这很慢,所以我想通过批量插入来加快速度。有什么好方法可以做到这一点?我应该使用一个结构数组在一个 OCIStmtExecute 中插入所有记录吗?您是否有任何示例代码显示如何执行此操作?
我目前正在使用 OCI 从 C++ 代码中将记录一个接一个地插入到表中。数据在结构的哈希映射中,我遍历映射的元素,将结构的属性绑定到表中记录的列(例如
定义插入查询 对记录的所有列使用 OCIBindByname( ) 迭代映射分配绑定变量作为结构 OCIStmtExecute 的属性 end
这很慢,所以我想通过批量插入来加快速度。有什么好方法可以做到这一点?我应该使用一个结构数组在一个 OCIStmtExecute 中插入所有记录吗?您是否有任何示例代码显示如何执行此操作?
您可能想要做的是“批量插入”。数组中的批量插入是通过使用 ArrayBinds 完成的,您将第一行的数据与数组的第一个结构绑定并设置跳转,这通常是结构的大小。在此之后,您可以使用数组数量执行语句。多个绑定将产生开销,因此使用批量插入。
bulk insert example.txt
by
{
delimeter=',' // or any delimiter specified in your text files
size=200kb //or your size of text file
}
使用 DPL(直接路径加载)。有关详细信息,请参阅docs.oracle.com。