2016-09-10 73 views
1

我在兩個不同位置的兩臺數據庫,我用下面的代碼複製兩個不同的記錄之間大數據在最快的方式

set rst1 = conn.execute ("Select A1,A2,A3 from Tickets") 
do until rst1.eof 
conn2.execute ("Insert into Tickets values (rst1!A1, rst1!A2, rst1!A3)") 
rst1.movenext 
loop 

將數據複製到一個表從位置A到位置B現在是數據庫已經增長到100萬條以上的記錄,當它將數據複製到位置B時,它花費如此多的時間來遍歷所有記錄。

位置A和位置B中名爲「Tickets」的數據庫表是相同的,我可以使用方法以最快的方式將位置A中的所有數據複製到B,而無需遍歷所有數以百萬計的記錄每次rds。

感謝

+0

您是否嘗試過使用存儲過程? –

+0

不.....我怎麼做兩個數據庫實例之間。位置A通過互聯網從位置B訪問,所以我想基本上通過互聯網從兩個不同數據庫實例之間的兩個類似表中複製數據。 – DoreenSly

回答

0

您可以使用批量複製和插入,這將是比基於事務的插入查詢速度快:

bcp AdventureWorks2012.Sales.Currency out "Currency Types.dat" -T -c 

相若方式批量插入

BULK INSERT AdventureWorks2012.Sales.SalesOrderDetail 
FROM '\\computer2\salesforce\dailyorders\neworders.txt' 

這會更快,因爲它不是以交易爲基礎的

https://msdn.microsoft.com/en-us/library/ms175937.aspx

+0

你能否提供一個參考資料,說明這個選項實際上比OP當前使用的要快? –

+0

至於我的理解bcp並沒有做很多事務日誌,而常規插入做了很多寫入事務日誌http://stackoverflow.com/questions/6793845/why-is-bcp-so-fast –

+0

公平不夠,只是認爲它有一個更快的原因是有幫助的。 –

相關問題