导入/导出

导入 API 选项

qianmoQqianmoQ· 更新于 2026-09-27· 阅读 6 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

导入选项 API

导入选项 API 的参数以 options JSON 形式指定。由于该 API 接收多部分表单数据,因此可以在同一个 CURL 调用中指定多个输入流。

使用 CURL 调用的示例

curl -g -X POST -u adminuser:password -H "Content-Type: multipart/form-data"
            -H "Cache-Control: no-cache"
            -F request=@importOptions.json
            -F data=@quickStartDB.zip
            "http://localhost:21000/api/atlas/admin/import"

若要使用默认设置,请将 importOptions.json 的内容设置为:

{
  "options": {
  }
}

选项

Import 过程支持以下选项:

  • 在导入操作中指定转换(transforms)。
  • 通过指定起始实体 guid 来恢复导入。
  • 可选地导入类型定义。
  • 处理大型导入。

转换(Transforms)

在导入过程中,可以更改传入实体的属性值。

这可以通过指定要修改的实体类型、属性以及修改方式来实现。

目前支持以下转换类型:

  • lowercase 将属性值转换为小写。
  • replace 执行字符串查找和替换操作。它接受两个参数:第一个是要查找的字符串,第二个是用于替换的字符串。

示例:

下面的示例对 hive_table 的 qualifiedName 属性应用了几个转换。首先将值转换为小写,然后查找 'cl1',如果找到,则将其替换为 'cl2'。

要使用该选项,请将 importOptions.json 的内容设置为:

{
  "options": {
    "transforms": {"hive_table": { "qualifiedName": [ replace:@cl1:@cl2 ] }, "hive_db": { "qualifiedName": [ replace:@cl1:@cl2 ] } }
  }
}

具体可以使用该选项的场景,请参考 ATLAS-1825。

起始 GUID 或起始索引

当导入操作正在进行时如果服务器宕机,可以从最后成功导入的实体处恢复导入,使导入从中断的地方继续。

服务端日志经过改进,会显示最后成功导入的实体的详细信息,包括该实体在导入列表中的索引位置及其 GUID。这两者均可用于指定恢复导入的位置。

要使用该选项,请将 importOptions.json 的内容设置为:

{
  "options": {
    "startGuid": "bd97c78e-3fa5-4f9c-9f48-3683ca3d1fb1"
  }
}

要使用 startPosition,请在 importOptions.json 中添加以下内容:

{
  "options": {
    "startPosition": "332"
  }
}

使用该行为的步骤:

  • 使用 CURL 启动一个耗时较长的导入(例如约 1000 个实体)。
  • 在导入进行过程中,停止 Atlas 服务器(使用 atlas_stop.py)。
  • 从位于 /var/log/atlas/application.log 的日志文件中,获取最后一个成功导入的实体 GUID 或索引位置。
  • 将该 GUID 更新到 importOptions.json 中。
  • 重新启动导入。

可选导入类型定义

Export 的输出中包含 atlas-typedef.json,其中存放了被导出实体的类型定义。

默认情况下(即未指定任何选项时),类型定义会被导入并应用到目标系统中,随后再执行实体导入。

在某些情况下,您可能不希望修改类型定义。此时导入失败比修改类型更好。

该选项允许选择性地导入类型定义。该选项默认设置为 true,表示会导入类型定义。将其设置为 false 时,源中的类型定义将不会被导入。如果被导入的实体与执行导入的系统中存在的类型不匹配,操作将会失败。

下表列出了类型定义导入过程中所处理的各种情况:

情况 处理方式

目标系统中不存在的传入类型 创建该类型。

待导入的类型与目标系统中的类型相同 不作更改。

待导入的类型与目标系统中的类型在某些属性上存在差异 将目标系统中的类型更新为源中所包含的属性。
目标系统中可能包含源中所没有的额外属性。
在这种情况下,目标系统的类型属性将是两者的并集。
目标系统中的属性不会被删除以匹配源。
如果属性的类型不同,导入过程将中止并记录异常。

要使用该选项,请将 importOptions.json 的内容设置为:

{
  "options": {
    "updateTypeDefinition": true
  }
}

指定从服务器位置导入的文件

在待导入的文件位于服务器某个位置的场景下,可以使用 importfile API。其行为与 Import API 相同。

要使用此选项,请将 importOptions.json 的内容设置为:

{
  "options": {
    "fileName": "/root/fileToBeImported.zip"
  }
}

cURL

curl -g -X POST -u adminuser:password -H "Content-Type: application/json"
            -H "Cache-Control: no-cache"
            -d r@importOptions.json
            "http://localhost:21000/api/atlas/admin/importfile"

处理大型导入

默认情况下,Import Service(导入服务)会将所有数据保存在内存中。对于包含大量数据的 ZIP 文件,这种方式可能会受到限制。

要配置临时目录,请使用应用属性 atlas.import.temp.directory。如果该属性留空,则会使用默认的内存实现。

请确保磁盘有足够的可用空间供该操作使用。

作为导入操作后端存储而创建的目录,其内容会在操作结束后被清除。

评论

登录后参与评论

正在加载评论…