我目前使用OCI從C++代碼中將記錄逐個插入表中。該數據位於結構的散列圖中,我迭代地圖的元素,將結構的屬性綁定到表中的記錄列(例如:使用OCI的批量插入
定義插入查詢 使用OCIBindByname()在地圖上記錄 迭代列 分配綁定變量與結構 的屬性OCIStmtExecute 結束
這是相當緩慢的,所以我想通過做批量插入加快,什麼是做一個好辦法這個?我應該使用一個結構數組插入一個OCIStmtExecute中的所有記錄嗎?你有任何示例代碼顯示如何做到這一點?
我目前使用OCI從C++代碼中將記錄逐個插入表中。該數據位於結構的散列圖中,我迭代地圖的元素,將結構的屬性綁定到表中的記錄列(例如:使用OCI的批量插入
定義插入查詢 使用OCIBindByname()在地圖上記錄 迭代列 分配綁定變量與結構 的屬性OCIStmtExecute 結束
這是相當緩慢的,所以我想通過做批量插入加快,什麼是做一個好辦法這個?我應該使用一個結構數組插入一個OCIStmtExecute中的所有記錄嗎?你有任何示例代碼顯示如何做到這一點?
你可能想要做的是'批量插入'。數組中的批量插入是通過使用ArrayBinds完成的,其中您將第一行的數據與數組的第一個結構綁定在一起,並設置跳轉,這通常是結構的大小。在此之後,您可以執行數組數量的語句執行。多重綁定會創建開銷,因此使用批量插入。
Here是一些示例代碼,顯示了我在OCI*ML中如何實現這個功能。總之,要做到這一點的方式是(比如對錶的一個整數列):
malloc()
的sizeof(int)
×行數和填充它的內存塊。這可能是一個數組。OCIBindByPos()
,指針爲*valuep
,尺寸爲value_sz
。OCIStmtExecute()
與iters
設定的行數從步驟1在我experience,100 ×的加速當然是可能的。
詐騙插入由enter code here
example.txt中enter code here
{enter code here
分隔符= '' //或任何分隔符specifiedin的文本文件enter code here
大小= 200KB //或文本文件的大小enter code here
} enter code here
bilk insert example.txt
by
{
delimeter=',' // or any delimeter specifiedin your text files
size=200kb //or your size of text file
}
enter code here