匯入

DynoTable 把 CSVJSONNDJSON 檔案匯入到既有的 表——這是匯出的另一半。整個檔案會在寫入任何一列之前先經過檢查,因此一個有問題的檔案會連同行號一起失敗,而不是讓你的資料匯入到一半。

用標籤頁工具欄中的匯入按鈕開啟它。匯入會寫入表,因此需要試用中或已啟用的許可證

DynoTable 的 DynamoDB 匯入對話方塊:選取的檔案、偵測到的列與推斷出的型別,以及前幾列的預覽。
DynoTable 的 DynamoDB 匯入對話方塊:選取的檔案、偵測到的列與推斷出的型別,以及前幾列的預覽。

匯入把資料載入到一張已經存在的表——它絕不會建立表。請先建立好表(及其主鍵),再匯入進去。

兩種保真等級

精確 —— 以 (DynamoDB-JSON)線纜形式寫成的 JSON / NDJSON。無需猜測任何內容:每個值都已自帶型別,因此以這種格式匯出的檔案匯入回去時分毫不差。當資料的準確性很重要時,使用這種格式。

便利 —— CSV 和樸素(未 marshalled)JSON。這些格式不攜帶型別資訊,因此 DynoTable 會為每一欄推斷型別,並在你提交之前顯示它推斷出的結果。方便,但會以有記錄可查的方式產生資訊損失——參見 便利檔案在哪些地方會損失資訊

欄位與型別

檔案的表頭會成為屬性名。預覽會列出每一欄以及 DynoTable 為它推斷出的型別。如果表頭與你的屬性名不符,可以右鍵點選欄位表頭來重新命名它;如果推斷出的資料型別不是你想要的,也可以在那裡更改它——比如一個只由數字組成的產品代碼,就該保持文字型別,而不是變成數字。

型別清單只會提供該欄的值實際能變成的型別,所以一欄純文字不會提供 Map 或 List 選項。如果一欄只有一種可能的型別,就不會出現清單。除此之外沒有其他對映畫面。

你的檔案必須提供表的完整主鍵。缺少某個鍵屬性、或該屬性型別錯誤的一列,會被按名稱拒絕。

整個檔案通過之前不會寫入任何內容

匯入會把檔案讀兩遍。第一遍驗證每一列且不寫入任何內容;只有檔案通過之後,第二遍才會寫入。

  • 問題會附帶行號回報(若是 JSON 陣列,則是項目位置),每次最多 20 個。
  • 一個檔案中兩列擁有相同的鍵會被拒絕,且會向你顯示兩個位置——DynamoDB 則會悄悄地只保留最後一個。
  • 修正檔案後再次按下匯入即可;對話方塊會保留在你選取的那個檔案上。

匯入會取代匹配的條目

匯入的一列會取代任何擁有相同主鍵的既有條目,逐屬性取代——而不是與它合併。舊條目擁有、但檔案中沒有的屬性會消失。

匯入也不會經過暫存,所以沒有審閱步驟,也無法還原。與已暫存的編輯不同,一次匯入無法從應用的歷史記錄中撤銷。對於你在意的資料,請先匯入到該表的一份副本中並檢查結果。

限制

限制
CSV / NDJSON 檔案大小250 MB
單一 .json 陣列50 MB——超過請改用 NDJSON
每次匯入的列數2,000,000
單一條目400 KB(DynamoDB 自身的上限)

.json 檔案裝著一個必須整體解析的大陣列,這就是它的上限較低的原因。NDJSON——每行一個條目——則是以串流方式處理,因此可以用到完整的 250 MB。

便利檔案在哪些地方會損失資訊

以下僅適用於 CSV樸素 JSON。marshalled 的 DynamoDB-JSON 格式沒有這些問題。

  • 型別是從樣本推斷出來的,樣本大約是前 200 列。一欄在樣本中看起來像數字,但在檔案後段變成非數字,會在驗證階段被拒絕——修正方式是改正檔案。
  • Set 和二進位資料在 CSV 中無法表示,所以無法從 CSV 匯入它們。
  • 空儲存格會被跳過,不會被寫成空字串。該條目就是不會有這個屬性。
  • Map 和 List 能保留下來。 匯出會把它們作為 JSON 文字寫進一個 CSV 儲存格,匯入會識別出這段文字並重建結構。如果某一欄其實就是純文字、只是碰巧看起來像 JSON,預覽會顯示它變成了什麼,你可以把該欄的資料型別改回 String。
  • 樸素 JSON 中非常大的數字在 DynoTable 看到它們之前就已經失去精度——這是 JSON 自身的限制。對於必須保持精確的 ID 和金額,請使用 DynamoDB-JSON。
  • 試算表安全標記會在匯入回來時被處理。 匯出會為試算表可能當成公式的儲存格加上一個撇號前綴。匯入時,'-5 會變回數字 -5'+7 會變回文字 +7——但像 '=SUM(A1) 這樣真正的公式會保留它的撇號,永久保留。移除它會重新啟動這個標記本來要拆除的東西。

進度、取消與失敗

正在執行的匯入會出現在側邊欄底部的活動塢中並顯示即時進度,即使你在其他標籤頁工作,它也會繼續進行。你可以在那裡停止它;已經寫入的列會保持已寫入狀態。

如果 DynamoDB 對該表的限流嚴重到即使重試也有部分列無法寫入,匯入會完成並告訴你有多少列未能寫入。重新執行同一個檔案是安全的——已經成功寫入的列只會以相同的值再寫一次。

匯入條目會留在塢中,直到你將它們關閉:一次匯入不會產生可指向的檔案,所以那一行記錄就是這次執行完成的唯一憑證。

已更新