导入

DynoTable 可将 CSVJSONNDJSON 文件导入到已有的表中 —— 这是 导出的另一半。整个文件会先经过检查,然后才写入第一行, 因此有问题的文件会带着行号失败,而不会让你的数据导入到一半。

通过表工具栏中的导入按钮打开它。导入会写入表,因此需要试用中或已激活的 许可证

DynoTable 的 DynamoDB 导入对话框:已选择的文件、检测到的列及其推断出的类型,以及前几行的预览。
DynoTable 的 DynamoDB 导入对话框:已选择的文件、检测到的列及其推断出的类型,以及前几行的预览。

导入把数据加载到一张已经存在的表中 —— 它绝不会创建表。请先创建好表(及其 主键),然后再向其导入。

两种保真度级别

精确 —— 以 (DynamoDB-JSON)线缆形式写入的 JSON / NDJSON。不做任何猜测:每个值都已经带有自己的类型,因此以该格式导出 的数据能原样导回。数据至关重要时应使用这种格式。

便捷 —— CSV 和朴素(unmarshalled)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 对该表的限流严重到即使重试也有部分行无法写入,导入会结束并告 诉你有多少行未能写入。重新运行同一个文件是安全的 —— 已经写入的行只会被 以相同的值再次写入一遍。

导入记录会一直留在坞中,直到你将其关闭:导入不会产生可供指向的文件,因此这一 行是该次运行完成的唯一记录。

更新于