在复制活动中配置 SFTP

本文概述了如何使用数据管道中的复制活动从 SFTP 中复制数据。

支持的格式

SFTP 支持以下文件格式。 请参阅每一篇介绍基于格式的设置的文章。

支持的配置

有关复制活动下每个选项卡的配置,请分别转到以下各部分。

常规

若要配置“常规”设置选项卡,请参阅常规”设置指导。

转到“”选项卡以配置复制活动源。 有关详细配置,请参阅以下内容。

Screenshot showing source tab and the list of properties.

需要以下三个属性:

  • 数据存储类型:选择“外部”。

  • 连接:从连接列表中选择 SFTP 连接。 如果不存在连接,则通过选择“新建”创建新的 SFTP 连接。

  • 文件路径类型:根据要读取文件的方式,从“文件路径”、“通配符文件路径”和“文件列表”中进行选择。

    • 文件路径:如果选择此类型,请指定源文件路径。 可以选择“浏览”以选择源文件或手动输入文件路径。

    • 通配符文件路径:如果选择此类型,请指定“通配符路径”以筛选源文件夹或文件。

      允许的通配符为:*(匹配零个或更多字符)和 ?(匹配零个或单个字符)。 如果文件夹名内包含通配符或此转义字符,请使用 ^ 进行转义。 如需更多示例,请转到文件夹和文件筛选器示例

      Screenshot showing wildcard file path.

      通配符文件夹路径:指定包含通配符的文件夹路径,以筛选源文件夹。

      通配符文件名称:指定给定文件夹路径/通配符文件夹路径下包含通配符的文件名,以筛选源文件。

    • 文件列表:如果选择此类型,请指定“文件夹路径”和“文件列表路径”,以指示复制给定的文件集。 指向包含要复制的文件列表的文本文件,每行一个文件。 如需更多示例,请转到文件列表示例

      • 文件夹路径:指定源文件夹的路径。 它是必需的。

      • 文件列表路径:指定包含要复制的文件列表的文本文件的路径。

        Screenshot showing list of files.

  • 文件格式:从下拉列表中选择适用的文件格式。 选择“设置”以配置文件格式。 有关不同文件格式的设置,请参阅支持格式的文章了解详细信息。

在“高级”下,可以指定以下字段:

  • 按上次修改时间筛选:根据指定的上次修改日期筛选文件。 将文件路径类型配置为文件列表时,此属性不适用。

    • 开始时间(UTC):如果文件的上次修改时间不早于配置的时间,则会选择这些文件。
    • 结束时间(UTC):如果文件的上次修改时间早于配置的时间,则选择这些文件。

    如果“开始时间(UTC)”具有日期/时间值,但“结束时间(UTC)”为 NULL,意味着将选中“上次修改时间”属性不早于该日期/时间值的文件。 如果“结束时间(UTC)”具有日期/时间值,但“开始时间(UTC)”为 NULL,则意味着将选中“上次修改时间”属性早于该日期/时间值的文件。 属性可以为 NULL,这意味着不会向数据应用任何文件属性筛选器。

  • 禁用分块:分块旨在优化性能,其发生于以下情形。 此选项可用于在每个文件内禁用分块。 在通过 FTP 复制数据时,服务会首先尝试获取文件长度,然后将文件分为多个部分以并行方式读取。 指定 FTP 服务器是支持获取文件长度还是要从某个偏移量读取。 默认情况下,它处于未选中状态。

  • 启用分区发现:指定是否从文件路径分析分区,并将它们添加为附加的源列。 默认情况下,它处于未选中状态,而且在使用二进制文件格式时不受支持。

    • 分区根路径:当启用了分区发现时,请指定绝对根路径,以便将已分区文件夹读取为数据列。
      如果未指定,默认情况下,

      • 在源上使用文件路径或文件列表时,分区根路径是你已配置的路径。
      • 使用通配符文件夹筛选器时,分区根路径是第一个通配符前的子路径。

      例如,假设将路径配置为 root/folder/year=2020/month=08/day=27

      • 如果将分区根路径指定为 root/folder/year=2020,则除了文件内的列外,复制活动还会生成另外两列 month 和 day,其值分别为“08”和“27”。
      • 如果未指定分区根路径,则不会生成额外的列。

      Screenshot showing Enable partition discovery.

  • 最大并发连接数:此属性指示活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。

  • 其他列:添加其他数据列以存储源文件的相对路径或静态值。 后者支持表达式。 有关详细信息,请转到在复制期间添加其他列

目标

转到“目标”选项卡以配置复制活动目标。 有关详细配置,请参阅以下内容。

Screenshot showing destination tab and the list of properties.

  • 数据存储类型:选择“外部”。
  • 连接:从连接列表中选择 SFTP 连接。 如果不存在连接,则通过选择“新建”创建新的 SFTP 连接。
  • 文件路径:指定要将数据写入到的文件路径。 可以选择“浏览”以选择源文件或手动输入文件路径。
  • 文件格式:从下拉列表中选择适用的文件格式。 选择“设置”以配置文件格式。 有关不同文件格式的设置,请参阅支持格式的文章了解详细信息。

在“高级”下,可以指定以下字段:

  • 复制行为:指定以基于文件的数据存储中的文件为源时的复制行为。 从以下属性中进行选择。

    • 平展层次结构:源文件夹中的所有文件都位于目标文件夹的第一级别。 目标文件具有自动生成的名称。
    • 合并文件:将源文件夹中的所有文件合并到一个文件中。 如果指定了文件名,则合并文件的名称为指定名称。 否则,它是自动生成的文件名。
    • 保留层次结构(默认值):保留目标文件夹中的文件层次结构。 指向源文件夹的源文件相对路径与指向目标文件夹的目标文件相对路径相同。
    • 添加动态内容:选择此项以使用动态内容指定复制行为。
  • 最大并发连接:活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。

  • 操作超时时间(分钟):指定将每个区块写入 SFTP 服务器的超时时间。 默认值为 60 分钟。

  • 使用临时文件上传:指示是将其上传到临时文件并重命名,还是将其直接写入到目标文件夹或文件位置。 默认情况下,它处于选中状态,服务先将数据写入到临时文件,然后在上传完成时重命名文件。

    采取此顺序有助于 (1) 避免可能会导致文件损坏的冲突(如果有其他进程对同一文件进行写入操作);(2) 在整个传输过程中确保文件的原始版本存在。 如果 SFTP 服务器不支持重命名操作,请禁用此选项,并确保不会对目标文件进行并发写入操作。

    提示

    如果将数据写入 SFTP 时遇到“UserErrorSftpPathNotFound”、“UserErrorSftpPermissionDenied”或“SftpOperationFail”错误,并且你使用的 SFTP 用户确实有适当的权限,请查看 SFTP 服务器是否支持文件重命名操作。 如果不支持,请禁用“使用临时文件上传”选项,然后重试。

映射

对于“映射”选项卡配置,请参阅在“映射”选项卡下配置映射。如果选择“二进制”作为文件格式,则不支持映射。

设置

对于“设置”选项卡配置,请转到“设置”选项卡下的“配置其他设置”

表摘要

下表包含有关 SFTP 中复制活动的详细信息。

名称 描述 必选 JSON 脚本属性
数据存储类型 你的数据存储类型。 外部 /
Connection SFTP 与源数据存储的连接。 <SFTP 连接> 连接
文件路径类型 用于获取源数据的文件路径类型。 文件路径
通配符文件路径
文件列表
/
文件路径 源文件的路径。 <文件路径> fileName
folderPath
通配符路径 源文件的通配符路径。 <通配符文件路径> 对于通配符文件名称为“是” wildcardFolderPath
wildcardFileName
文件夹路径 源文件夹的路径。 <文件夹路径> folderPath
文件列表的路径 指明复制给定文件集。 指向包含要复制的文件列表的文本文件,每行一个文件。 <文件列表路径> fileListPath
文件格式 源数据的文件格式。 有关不同文件格式的信息,请参阅支持的格式的文章了解详细信息。 / /
按上次修改时间筛选 将筛选在 [开始时间、结束时间) 范围内具有上次修改时间的文件,以便进一步处理。 该时间将以 yyyy-mm-ddThh:mm:ss.fffZ 格式应用于 UTC 时区。 可以跳过此属性,这意味着不会应用任何文件属性筛选器。 将文件路径类型配置为文件列表时,此属性不适用。 datetime modifiedDatetimeStart
modifiedDatetimeEnd
禁用分块 分块旨在优化性能,其发生于以下情形。 此选项可用于在每个文件内禁用分块。 在通过 FTP 复制数据时,服务会首先尝试获取文件长度,然后将文件分为多个部分以并行方式读取。 指定 FTP 服务器是支持获取文件长度还是要从某个偏移量读取。 选中或未选中(默认) disableChunking:
true 或 false(默认)
启用分区发现 指示是否从文件路径分析分区,并将它们添加为附加的源列。 选中或未选中(默认) enablePartitionDiscovery:
true 或 false(默认)
分区根路径 为了将分区文件夹读取为数据列的绝对分区根路径。 在启用分区发现时指定它。 <分区根路径> partitionRootPath
最大并发连接数 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。 < 并发连接的上限 >
(整数)
maxConcurrentConnections
其他列 添加其他数据列以存储源文件的相对路径或静态值。 后者支持表达式。 有关详细信息,请转到在复制期间添加其他列 • 名称
• 值
additionalColumns:
• 名称
• 值

目标

名称 描述 必选 JSON 脚本属性
数据存储类型 你的数据存储类型。 外部 /
Connection 与源 SFTP 的连接。 < 你的连接 > 连接
文件路径 目标数据的文件路径。 目标的文件路径 folderPath
fileName
文件格式 源数据的文件格式。 有关不同文件格式的信息,请参阅支持的格式的文章了解详细信息。 / /
复制行为 定义以基于文件的数据存储中的文件为源时的复制行为。 • 平展层次结构
• 合并文件
• 保留层次结构
copyBehavior
- FlattenHierarchy
- MergeFiles
- PreserveHierarchy
最大并发连接数 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。 < 最大并发连接数 > maxConcurrentConnections
操作超时时间(分钟) 将每个区块写入 SFTP 服务器的超时时间。 <操作超时>
默认值为 60
operationTimeout
使用临时文件上传 指示是否上传临时文件并重命名。 如果 SFTP 服务器不支持重命名操作,请禁用此选项。 已选择(默认)或未选择 useTempFileRename:
true(默认)或 false