导入和导出数据

作为应用制作工具开发者,您可以将 Google 表格中的数据导入到 Cloud SQL,也可以将 Cloud SQL 中的数据导出到 Google 表格。

云端硬盘表格模型已弃用;您不能再向这些模型中导入数据,但仍可从其中导出数据。

导入数据

您可以通过以下任一方式导入数据:

  • 将单个选定表格中的数据导入到选定部署中的选定模型。
  • 将电子表格中的所有数据导入到选定部署中的所有模型,并保留数据间的所有关系。

应用制作工具可导入选定表格或电子表格中的所有数据,具体取决于您的导入设置。在导入期间,您可以向模型添加数据或更新现有数据,但不能同时执行这两项操作。如果您需要对导入的数据进行更精细的控制,请使用服务器脚本。

导入要求

在导入数据之前,请查看以下有关应用访问权限和数据格式的要求。您可以先手动验证数据,然后再导入数据,也可以尝试直接导入数据。如果应用制作工具在数据验证期间发现问题,您需要先解决这些问题,然后再重试。

数据导入要求
访问权限
  • 访问应用制作工具应用 - 您必须是该应用的开发者,或者该应用必须已与您共享(即您拥有可修改访问权限)。
  • 访问部署 - 您的应用必须已发布到部署。
  • 访问表格 - 您必须是该电子表格的所有者,或者该电子表格必须已与您共享(即您拥有任何级别的访问权限)。
数据量 数据量受限于以下条件中第一个达到者:
  • Google 表格中的源数据不得超过 500 万个单元格。
  • 导入操作所需的时间必须少于 30 分钟。

要导入更多数据,您可以按如下所述操作:

  • 分批导入数据。例如,将数据分为多个仅包含 50 万个单元格的批次。
  • 使用服务器脚本从不同来源(例如 CSV 文件或数据库)中导入数据。此操作仍需遵守 30 分钟的时间限制。
  • 使用 Cloud SQL 内置的导入功能。
  • 列号和列名 - 在应用制作工具中,模型中的每个字段对应一列数据。每列的第一行必须用于存放列名。列名均应采用大写形式。
  • - 如果记录包含键,则键必须位于第一列,并且列名必须为 _key(primary-key-id)。应用制作工具会将键与记录一起存储。对于具有关系的记录,应用制作工具会使用键将该记录与其他模型中的相应记录相关联。如需详细了解关系和键,请参阅“在 Google 表格中表示关系”。
  • 不在模型中但含有数据的额外列 - 表格中不能存在含有数据的额外列。允许存在空白列。
  • 缺失的列 - 建议不要包含缺失的列。如果您日后想要添加数据,可能并非易事,而且必须使用服务器脚本。
  • 列顺序 - 除键列外,其他列的顺序无关紧要。
  • 必填字段 - 如果某个列对应于模型中的必填字段,则每个单元格都必须包含数据,即使定义了默认值也是如此。当您导入必填字段时,系统不会应用默认值,因此如果存在空单元格,则会导致数据验证失败。当您导入非必填字段时,系统会应用默认值。
应用制作工具会从表格的第二行开始导入数据,直到最后一个含有数据的行。空行将作为空记录导入。

注意:如果模型中包含必填字段,但表格中包含空行,则数据验证将失败。

数据格式 以下任何数据类型的单元格均可为空。空单元格会被解释为 null(对于字符串、数字和日期类型的字段)和 false(对于布尔值类型的字段)。注意:对于必填字段,单元格不能为空,否则数据验证将失败。
  • 字符串类型的单元格可以包含任何值。
  • 数字类型的单元格必须仅包含数字,有无小数点 (.) 均可。您可以使用包含小数点的数字格式、Automatic 格式或 Plain text 格式。
  • 布尔值类型的单元格必须为 truefalse,并且不区分大小写。
  • 日期、时间和时区类型的单元格必须采用 ISO 8601 格式,例如:
    • 2017-09-01T10:42:42.123-03:00
    • 2017-09-01T10:42:42.123-0300
    • 2017-09-01T10:42:42-03:00
    • 2017-09-01T10:42:42Z
    • 2017-09-01T10:42:42
    • 2017-09-01

    如果在未指定时区的情况下导入时间数据,则应用制作工具将使用应用的时区设置。

关系 如需了解详情,请参阅“在 Google 表格中表示关系”。

数据的导入原理

应用制作工具会在模型中为每个导入行创建一条记录,但如果您在导入时指定更新操作,则工具会更新现有记录。

对于带有 _key_key(primary-key-id) 值的记录,该工具会按如下方式进行处理:

  • 如果具有该键的记录已存在,则当您选择 Update existing data 时,系统会更新该记录。
  • 如果具有该键的记录不存在,则当您选择更新现有数据 (Update existing data) 时,系统不会添加该记录。
  • 如果具有该键的记录不存在,并且您未选择更新现有数据 (Update existing data),系统将使用该键创建一条记录。
  • 对于具有单个主键(例如,以下示例中名为 _key(id) 的列)的 Cloud SQL 模型,_key 列的优先级更高。如果 _key 值为空,则 _key(id) 值将被用作主键。例如:

    具有以下特征的表格的屏幕截图。该表格包含三个列:_key、_key(id) 和 URL。表格有三行:google.com、gmail.com 和 youtube.com。

    应用制作工具按如下方式处理键值:

    • google.com - 不具有 _key 值,因此应用制作工具使用主键。
    • gmail.com - 具有 _key 值和主键。_key 值会替换主键。
    • youtube.com - 具有 _key 值,因此应用制作工具使用该值。

在导入操作期间,已在使用该应用的用户可能看不到导入的数据。已导入数据的可见性取决于应用的编写方式和用户执行的操作。重新加载运行应用的浏览器页面后,用户将可以看到这些数据。

从 Google 表格中导入数据

  1. (可选)验证表格中的数据是否满足数据要求
  2. 应用制作工具中,打开要向其中导入数据的应用。
  3. 在导航窗格中,点击任何模型。
  4. 点击左上角的 Import Data from Sheet
  5. Published deployment 下拉列表中,选择要向其中导入数据的部署。
  6. 选择导入类型:
    • 要将电子表格中的所有数据导入到所有模型中,请选择 All models and relations data
    • 要将单个表格中的数据导入到一个模型中,请选择单个模型数据 (Single model data)。
  7. 如果您选择了单个模型数据 (Single model data),请点击模型下拉列表,然后选择用于导入数据的模型。
  8. 点击选择,再选择要从中导入数据的电子表格,然后再次点击选择
  9. 如果您选择了单个模型数据 (Single model data),请点击表格 (Sheet) 下拉列表,然后选择包含待导入数据的表格。
  10. 选择用于更新或添加数据的选项:

    1. 要使用导入的数据更新现有模型数据,请点击 Advanced,然后选择 Data already exists? update existing data

      • 记录必须具有键值(_key_key(primary-key-id))。应用制作工具会使用该键值将导入的数据与现有数据关联起来。现有数据随即会更新。
      • 如果您选择了 Data already exists? update existing data,则不会添加新数据。
    2. 要向模型添加数据,请勿选择 Data already exists? update existing data。如果您选择了所有模型和关系数据 (All models and relations data),则可以在添加新数据之前删除所有现有数据。点击 Advanced,然后选择 Delete all existing data before import

      • 如果新数据不具有键值,则系统会添加新记录并为其创建键值。如果您在未删除现有数据的情况下再次导入相同数据,则系统会使用新键再次添加记录。您的模型数据将包含具有不同键的重复记录。
      • 如果导入的数据具有键值,那么除非您删除现有数据,否则这些键值无法与现有记录的值匹配。由于两条记录不能具有相同键,因此导入操作将失败。
  11. 点击导入

    应用制作工具会根据数据要求验证源数据。如果成功通过验证,则应用制作工具会导入数据。

    在验证和导入操作正在进行期间,您可以在应用制作工具编辑器中处理其他页面。导入状态消息会显示在应用制作工具界面底部。

  12. 如果应用制作工具报告错误,请更正表格中的错误,然后点击导入

  13. 如果应用制作工具报告导入成功完成,请点击完成

导出数据

您可以从个别模型中导出数据,也可以从包含任何关系的应用中导出所有数据。应用制作工具可以导出选定部署中选定模型的所有数据。如果您需要对导出的数据进行更精细的控制,请使用服务器脚本。

应用制作工具不会在导出时执行数据验证。模型验证条件仅适用于应用界面中的数据条目和数据导入操作。

导出要求

在导出数据之前,请查看以下有关应用访问权限和数据格式的要求。

数据导出要求
访问权限
  • 访问应用制作工具应用 - 您必须是该应用的开发者,或者该应用必须已与您共享(即您具有可修改可查看访问权限)。
  • 访问部署 - 您的应用必须已发布到部署。
  • 访问表格 - 您将成为电子表格的所有者,因为应用制作工具将您的 Google 云端硬盘中创建该表格。
数据量 数据量受限于以下条件中第一个达到者:
  • 源数据不得超过 500 万个单元格。
  • 导出操作所需的时间少于 30 分钟。

要导出更多数据,您可以按如下所述操作:

  • 使用服务器脚本将数据导出到其他目标(例如导出到 CSV 文件或数据库)。此操作仍需遵守 30 分钟的时间限制。
  • 使用 Cloud SQL 内置的导出功能。

数据的导出原理

应用制作工具会在表格中创建一个具有以下特征的电子表格:

将数据导出到 Google 表格

  1. 应用制作工具中,打开该应用。
  2. 点击 Settings Deployments
  3. 在包含待导出数据的部署旁边,点击向下箭头 ,然后点击 Export data
  4. 选择导出选项:

    • 要将所有数据导出到一个电子表格中,请选择所有模型和关系数据 (All models and relations data)。
    • 要将一个或多个模型中的数据导出到一个电子表格中,请选择选定模型数据 (Selected models data)。
  5. 点击导出

在 Google 表格中表示关系

如何在 Google 表格中表示关系取决于涉及的是一对一关系、多对一关系还是多对多关系。

一对一关系和多对一关系

对于使用一对一关系或多对一关系的模型,其所对应表格中的最后几列将以各关联方命名。模型中关联记录的主键名称充当列值。

在以下示例中:

  • CompanyRating 模型跟踪公司评分数据。
  • Company 模型跟踪公司信息,包括已编译的评分数据。
  • CompanyRating 模型中的“Ratings”和“Company”之间具有多对一关系。
  • CompanyRating 表格中最后一列的名称为“Company”(代表关联方)。该列包含与每个评分关联的公司的主键名称。

多对多关系

对于多对多关系,各项关系会单独列在一个名为“<关系名称>(<开始模型名称> - <结束模型名称>)”的表格中。该表格包含两个列,每一列分别对应关系中涉及的其中一个模型。各行会列出所有关联的本地键对。如果某记录不具有任何关联,则它不会包含在此表格中。

在以下示例中:

  • Company 表格列出了三家公司,而 Region 表格列出了四个区域。
  • Companies - CompanyRegions (Company - Region) 表格包含关系数据。“Companies - CompanyRegions”是关系名称。
  • 多对多关系用两个列表示,即“Company”和“CompanyRegions”,每个列分别对应关系中涉及的其中一个模型。关联方模型中的主键名称充当列值。
  • 关系数据显示了 Vendor 3 公司与两个区域有关联,North America 区域与两家公司有关联。

要进一步了解如何导出模型关系,您可以使用供应商评分模板。首先部署应用并向其添加一些数据。然后,导出数据并查看电子表格。

同时执行导入和导出操作

虽然一次执行一个导入或导出操作是万无一失的做法,但应用制作工具支持您和应用的其他任何开发者同时执行以下操作:

  • 您可以同时为任何部署运行任何类型的数据导出作业。
  • 您可以同时将数据导入到不同的部署中。
  • 在将所有模型和关系导入部署时,您不能对同一部署运行其他任何类型的数据导入作业。
  • 在将数据导入到单个模型中时,您可以同时将数据导入到其他模型中。但是,不能同时对同一模型运行导入作业。