logo头像

Edward.K Thinking

Azure Cosmos DB to Cosmos DB的資料轉移工具


在Azure使用一陣子的Cosmos DB,如果需要把資料庫的資料轉移到其他資料庫,又或是想從雲端將資料庫的資料轉回地端的Cosmos DB模擬器,方便開發者使用資料進行開發,雖然,可以透過C#方式撰寫程式將資料抓回來,但是始終不是那樣方便。這時候就必須透過工具來幫忙就才會比較方便。工具下載

直接解壓縮,然後在資料夾中選dtui.exe執行


雖然上面寫的是Document DB,不過還是可以使用的,畢竟在Cosmos DB前身也是Document DB,透過這工具不只是可以做到Cosmos DB to Cosmos DB,也可以將其他資料匯入到Cosmos DB裡面來


這次,主要是要把不同的Cosmos DB間將資料互傳,所以在來源端我們選擇Document DB


這邊就是填入要連線的字串,裡面資訊可以到Azure的Cosmos DB上找到


拷貝PRIMARY CONNECTION STRING這串內容後,會發生連線錯誤,主要是這段裡面沒有放入Database的資訊,必須額外手動加入database=XXXX才可以。當我們設定好連線,按一下確認看是否可以成功,如果今天是在防火牆內,就必須在傳輸模式改設定為getway,不然可能會有些問題


來源端設定好之後,就是到目標端,傳入目標端會有三種模式,分別為循序、大量和檔案,在這裡因為是大量資料轉移,自然就選擇第二項,不過,在第二項只有支援你的Cosmos DB是沒有切分Partation的,然後把相關設定好就可以。在這裡可以先不需要設定Collection,如果你是設定原本沒有的Collection,在資料轉移的時候,會自動幫你建立Collection。此外,也要把ID可以建立,這樣好處在於萬一需要重來轉移資料時,可以透過ID避免資料重複比數產生


中間的幾個選項,主要是在於是否要輸入錯誤資訊到檔案中,以及Retry的間隔時間。之後就可以看到要轉換資料的Command。都確認沒有問題後,就可以開始轉移資料了。這樣轉移速度有多快呢?基本上要轉移非常大量資料勢必需要一段時間。


以我的環境來測試,大概15分鐘能轉移快五萬筆的資料。可見要大量把某個Cosmos DB轉到另一個Cosmos DB需要很大量時間

上一篇