匯入
DynoTable 把 CSV、JSON 和 NDJSON 檔案匯入到既有的 表——這是匯出的另一半。整個檔案會在寫入任何一列之前先經過檢查,因此一個有問題的檔案會連同行號一起失敗,而不是讓你的資料匯入到一半。
用標籤頁工具欄中的匯入按鈕開啟它。匯入會寫入表,因此需要試用中或已啟用的許可證。

匯入把資料載入到一張已經存在的表——它絕不會建立表。請先建立好表(及其主鍵),再匯入進去。
兩種保真等級
精確 —— 以 (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 對該表的限流嚴重到即使重試也有部分列無法寫入,匯入會完成並告訴你有多少列未能寫入。重新執行同一個檔案是安全的——已經成功寫入的列只會以相同的值再寫一次。
匯入條目會留在塢中,直到你將它們關閉:一次匯入不會產生可指向的檔案,所以那一行記錄就是這次執行完成的唯一憑證。


