如題。目前在做一個資料表的傳輸,從一個服務器A向另一個服務器B傳輸指定的表資料,要求做到資料成功插入到服務器B后,再洗掉服務器A的資料,即要保證資料完整上傳。
我現在的做法是兩個query同時打開,逐條地處理,先執行插入,再執行洗掉,如此可達到要求。但是這樣的效率也是最低的,請救下大家是否有其他方法可以使用?希望大家多提供些方法,謝謝。
uj5u.com熱心網友回復:
資料有多大,兩個服務器,就得一個取出來,再放到另一個服務器上uj5u.com熱心網友回復:
可不可把資料按某個屬性分組,然后起多個執行緒,一個執行緒處理一組?uj5u.com熱心網友回復:
我都先讀到記憶體在,寫到服務器上...uj5u.com熱心網友回復:
這種情況下的瓶頸在于所使用資料庫介面,看看是否提供批量讀寫記錄的APIuj5u.com熱心網友回復:
一百萬左右的資料量吧
uj5u.com熱心網友回復:
我現在大致上也是這么做的,但是發現速度還是沒有很明顯的提高。
uj5u.com熱心網友回復:
是的,但是一條一條地處理,速度比較慢。
uj5u.com熱心網友回復:
可以批量寫的啊。。不過速度也挺慢的。。連接的時候最后有個引數寫一下的uj5u.com熱心網友回復:
這種資料傳輸,貌似sqlserver有自己的大批量資料處理的方法,樓主可以去sqlserver區去問問uj5u.com熱心網友回復:
一般都是用資料庫工具比如dts導的 。uj5u.com熱心網友回復:
嗯,一般自己做就是用dts之類的,不過現在是要求能自動傳輸資料,并且能有一定的兼容性,即出錯時能記錄詳細的出錯記錄及進行相應的處理。
uj5u.com熱心網友回復:
用存盤程序+多執行緒+事務是不是會快點呢?uj5u.com熱心網友回復:
做成 dts包 然后用dtsrun命令列呼叫,做成作業 。uj5u.com熱心網友回復:
建議:導資料最后還是得經過服務器本身的資料庫管理系統來處理,最好都交給資料庫管理系統(如:SQLSERVER2005等)本身去做。實施上就是通程序式將sql指令直接扔給資料庫管理系統去處理,
例如:
insert into TAB_WZFFBASE
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\DB.mdb";User ID=Admin;Password=')...Sheet2$
上述就是將.mdb里的資料表寫入sqlserver里的TAB_WZFFBASE表。這個命令直接扔給SQLServer來做。
至于程式中的進度顯示,你可以一個個表來導,或者若干條記錄分塊導。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/156854.html
標籤:數據庫及相關技術
上一篇:字串中雙引號的表示
