インポート

DynoTable は CSVJSONNDJSON ファイルを既存のテーブルへ インポートします — エクスポートの対になる機能です。 ファイル全体を 1 行も書き込む前にチェックするので、不正なファイルは行番号 付きで失敗し、データが中途半端にインポートされたまま残ることはありません。

テーブルツールバーの インポート ボタンから開きます。インポートはテーブルに 書き込むため、Trialing または Active なライセンスが 必要です。

DynoTable の DynamoDB インポートダイアログ:選択したファイル、検出された列と推論された型、そして最初の数行のプレビュー。
DynoTable の DynamoDB インポートダイアログ:選択したファイル、検出された列と推論された型、そして最初の数行のプレビュー。

インポートはすでに存在するテーブルへデータを読み込みます — テーブルを新規に 作ることはありません。まずテーブル(とそのプライマリキー) を作成してから、そこへインポートしてください。

忠実度の 2 段階

完全(DynamoDB-JSON)のワイヤ形式で 書かれた JSON / NDJSON。何も推測しません — 値はすでにそれぞれの型を持って いるので、この形式で取得したエクスポートは何も変わらずに再インポートされます。 データが重要なときはこの形式を使ってください。

簡便CSV とプレーンな(アンマーシャリングされた)JSON。これらは型 情報を持たないため、DynoTable が列ごとに型を推論し、コミットする前に何を選んだ かを表示します。手軽な一方、決められた形で情報が失われます — 詳しくは 簡便な形式のファイルで失われる情報 を参照してください。

列と型

ファイルのヘッダーが属性名になります。プレビューには、DynoTable が推論した型 とともにすべての列が一覧表示されます。列ヘッダーを右クリックすると、ヘッダーが 自分の属性名と一致しないときにリネームしたり、推論された型が望むものと 違うときにデータ型を変更したりできます — たとえば、数字だけで構成された 商品コードを、数値ではなくテキストのまま保ちたい場合などです。

型の候補一覧には、その列の値が実際になり得る型しか表示されません。プレーン テキストの列であれば Map や List は候補に出てきません。候補が 1 つしかない 列には一覧自体が表示されません。マッピング用の画面はこれ以上ありません。

ファイルはテーブルの完全なプライマリキーを備えている必要があります。キー 属性が欠けている行や、キーの型が間違っている行は、名前を示した上で拒否され ます。

ファイル全体が通るまで何も書き込まれない

インポートはファイルを 2 回読みます。1 回目のパスはすべての行を検証し、 何も書き込みません。ファイルが通ったときだけ、2 回目のパスで書き込みます。

  • 問題は行番号(JSON 配列の場合はアイテムの位置)とともに報告され、一度に 最大 20 件まで表示されます。
  • 1 つのファイル内に同じキーを持つ行が 2 つあると拒否され、両方の位置が 表示されます — DynamoDB は最後の 1 件だけを黙って残してしまいます。
  • ファイルを直して再度インポートを押してください。ダイアログは選択した ファイルのまま維持されます。

インポートは一致するアイテムを置き換える

インポートされた行は、同じプライマリキーを持つ既存のアイテムを、属性ごと そのまま置き換えます — マージはされません。古いアイテムが持っていて ファイルにはない属性は失われます。

インポートはステージングも経由しません。そのため確認 ステップも取り消し(revert)もありません。ステージされた編集とは異なり、 インポートはアプリの履歴から元に戻すことができません。大切なデータに対しては、 まずテーブルのコピーにインポートして結果を確認してください。

制限

制限
CSV / NDJSON のファイルサイズ250 MB
単一の .json 配列50 MB — それ以上は NDJSON を使ってください
インポートあたりの行数2,000,000
アイテム 1 件400 KB(DynamoDB 自体の上限)

.json ファイルは 1 つの大きな配列を丸ごとパースする必要があるため、上限が 低くなっています。NDJSON — 1 行に 1 アイテム — はストリーミングできるため、 250 MB まるごと扱えます。

簡便な形式のファイルで失われる情報

以下は CSVプレーン JSON のみに当てはまります。マーシャリング済みの DynamoDB-JSON 形式にはこうした問題はありません。

  • 型は先頭およそ 200 行のサンプルから推論されます。 そこでは数値に見える 列が、ファイルの後の方で数値でなくなると、検証中に拒否されます — 直すには ファイル側を修正してください。
  • Set とバイナリは CSV で表現できないため、CSV からインポートすることは できません。
  • 空のセルはスキップされ、空文字列としては書き込まれません。アイテムには 単純にその属性が存在しなくなります。
  • Map と List はそのまま維持されます。 エクスポートはそれらを CSV セルに JSON テキストとして書き込み、インポートはそのテキストを認識して構造を 再構築します。あるテキストの列がたまたま JSON のように見えるだけの場合は、 プレビューにその結果が表示されるので、その列のデータ型を String に 戻すことができます。
  • プレーン JSON の非常に大きな数値は、DynoTable が受け取る前に精度が 失われます — これは JSON 自体の制約です。厳密な値を保つ必要がある ID や 金額には DynamoDB-JSON を使ってください。
  • スプレッドシート保護のマークは戻す際に処理されます。 エクスポートは、 スプレッドシートが数式とみなすセルの先頭にアポストロフィを付加します。 インポート時、'-5 は数値の -5 に、'+7 はテキストの +7 として戻ります — ただし '=SUM(A1) のような本物の数式は、アポストロフィをそのまま維持 します。これを取り除くと、そのマークが本来防ぐはずのものが再び有効になって しまいます。

進捗、キャンセル、失敗

実行中のインポートは、サイドバー下部の Activity ドックにライブの進捗と ともに表示され、他のタブで作業している間も継続します。そこからStopする こともでき、すでに書き込まれた行はそのまま残ります。

DynamoDB がテーブルを強くスロットリングし、リトライしても一部の行が書き込め なかった場合、インポートは完了し、何行が書き込めなかったかを伝えます。 同じファイルを再実行しても安全です — 書き込みに成功していた行は、同じ値で もう一度書き込まれるだけです。

インポートのエントリは、あなたが閉じるまでドックに残り続けます。インポートは 指し示すファイルを生成しないため、その行だけが実行が完了したことを示す唯一の 記録になります。

更新日