使用 Azure 数据工厂或 Azure Synapse Analytics 在 SFTP 服务器中复制和转换数据

适用于: Azure 数据工厂 Azure Synapse Analytics

提示

试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用

本文概述如何使用复制活动从/向安全 FTP (SFTP) 服务器复制数据,以及如何使用数据流在 SFTP 服务器中转换数据。 有关详细信息,请阅读 Azure 数据工厂Azure Synapse Analytics 的简介文章。

支持的功能

以下功能支持此 SFTP 连接器:

支持的功能 IR
复制活动(源/接收器) ① ②
映射数据流源(源/接收器)
Lookup 活动 ① ②
GetMetadata 活动 ① ②
Delete 活动 ① ②

① Azure 集成运行时 ② 自承载集成运行时

具体而言,SFTP 连接器支持:

  • 使用基本、SSH 公钥或多重身份验证从/向 SFTP 服务器复制文件 。
  • 按原样复制文件,或者通过使用支持的文件格式和压缩编解码器分析或生成文件来复制文件。

先决条件

如果数据存储位于本地网络、Azure 虚拟网络或 Amazon Virtual Private Cloud 内部,则需要配置自承载集成运行时才能连接到该数据存储。

如果数据存储是托管的云数据服务,则可以使用 Azure Integration Runtime。 如果访问范围限制为防火墙规则中允许的 IP,你可以选择将 Azure Integration Runtime IP 添加到允许列表。

此外,还可以使用 Azure 数据工厂中的托管虚拟网络集成运行时功能访问本地网络,而无需安装和配置自承载集成运行时。

要详细了解网络安全机制和数据工厂支持的选项,请参阅数据访问策略

入门

若要使用管道执行复制活动,可以使用以下工具或 SDK 之一:

使用 UI 创建 SFTP 链接服务

使用以下步骤在 Azure 门户 UI 中创建 SFTP 链接服务。

  1. 浏览到 Azure 数据工厂或 Synapse 工作区中的“管理”选项卡并选择“链接服务”,然后单击“新建”:

  2. 搜索 SFTP 并选择 SFTP 连接器。

    Screenshot of the SFTP connector.

  3. 配置服务详细信息、测试连接并创建新的链接服务。

    Screenshot of configuration for an SFTP linked service.

连接器配置详细信息

以下部分提供了有关各属性的详细信息,这些属性用于定义特定于 SFTP 的实体。

链接服务属性

SFTP 链接服务支持以下属性:

属性 描述 必需
type type 属性必须设置为 Sftp。
host SFTP 服务器的名称或 IP 地址。
port SFTP 服务器侦听的端口。
允许的值为整数,默认值为 22。
skipHostKeyValidation 指定是否要跳过主机密钥验证。
允许的值为 truetrue(默认值)。
hostKeyFingerprint 指定主机密钥的指纹。 是(如果“skipHostKeyValidation”设置为 false)。
authenticationType 指定身份验证类型。
允许的值为 Basic、SshPublicKey 和 MultiFactor 。 有关更多属性,请参阅使用基本身份验证部分。 有关 JSON 示例,请参阅使用 SSH 公钥身份验证部分。
connectVia 用于连接到数据存储的集成运行时。 若要了解详细信息,请参阅先决条件部分。 如果未指定集成运行时,服务会使用默认的 Azure Integration Runtime。

使用基本身份验证

若要使用基本身份验证,请将“authenticationType”属性设置为“Basic” ,并指定下列属性以及上一部分介绍的 SFTP 连接器泛型属性:

属性 描述 必选
userName 有权访问 SFTP 服务器的用户。
password 用户 (userName) 的密码。 将此字段标记为 SecureString 以安全地存储它,或引用存储在 Azure 密钥保管库中的机密

示例:

{
    "name": "SftpLinkedService",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "<sftp server>",
            "port": 22,
            "skipHostKeyValidation": false,
            "hostKeyFingerPrint": "ssh-rsa 2048 xx:00:00:00:xx:00:x0:0x:0x:0x:0x:00:00:x0:x0:00",
            "authenticationType": "Basic",
            "userName": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

使用 SSH 公钥身份验证

要使用 SSH 公钥身份验证,请将“authenticationType”属性设置为“SshPublicKey”,并指定除上一部分所述 SFTP 连接器泛型属性以外的下列属性:

属性 描述 必选
userName 有权访问 SFTP 服务器的用户。
privateKeyPath 指定集成运行时可以访问的私钥文件的绝对路径。 只有在“connectVia”中指定了自承载类型的集成运行时的情况下,此项才适用。 指定 privateKeyPathprivateKeyContent
privateKeyContent Base64 编码的 SSH 私钥内容。 SSH 私钥应采用 OpenSSH 格式。 将此字段标记为 SecureString 以安全地存储它,或引用存储在 Azure 密钥保管库中的机密 指定 privateKeyPathprivateKeyContent
passPhrase 如果密钥文件或密钥内容受通行短语保护,请指定用于解密私钥的通行短语或密码。 将此字段标记为 SecureString 以安全地存储它,或引用存储在 Azure 密钥保管库中的机密 是(如果私钥文件或密钥内容受通行短语的保护)。

注意

SFTP 连接器支持 RSA/DSA OpenSSH 密钥。 请确保密钥文件内容以“-----BEGIN [RSA/DSA] PRIVATE KEY-----”开头。 如果私钥文件是 PPK 格式的文件,请使用 PuTTY 工具将其从 PPK 格式转换为 OpenSSH 格式。

示例 1:使用私钥文件路径进行 SshPublicKey 身份验证

{
    "name": "SftpLinkedService",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "<sftp server>",
            "port": 22,
            "skipHostKeyValidation": true,
            "authenticationType": "SshPublicKey",
            "userName": "xxx",
            "privateKeyPath": "D:\\privatekey_openssh",
            "passPhrase": {
                "type": "SecureString",
                "value": "<pass phrase>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

示例 2:使用私钥内容进行 SshPublicKey 身份验证

{
    "name": "SftpLinkedService",
    "type": "Linkedservices",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "<sftp server>",
            "port": 22,
            "skipHostKeyValidation": true,
            "authenticationType": "SshPublicKey",
            "userName": "<username>",
            "privateKeyContent": {
                "type": "SecureString",
                "value": "<base64 string of the private key content>"
            },
            "passPhrase": {
                "type": "SecureString",
                "value": "<pass phrase>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

使用多因素身份验证

要使用结合基本身份验证和 SSH 公钥身份验证的多重身份验证,请指定上述部分中所述的用户名、密码和私钥信息。

示例:多重身份验证

{
    "name": "SftpLinkedService",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "<host>",
            "port": 22,
            "authenticationType": "MultiFactor",
            "userName": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            },
            "privateKeyContent": {
                "type": "SecureString",
                "value": "<base64 encoded private key content>"
            },
            "passPhrase": {
                "type": "SecureString",
                "value": "<passphrase for private key>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

数据集属性

有关可用于定义数据集的各部分和属性的完整列表,请参阅数据集一文。

Azure 数据工厂支持以下文件格式。 请参阅每一篇介绍基于格式的设置的文章。

SFTP 支持基于格式的数据集中 location 设置下的以下属性:

属性 描述 必需
type 数据集中 location 下的 type 属性必须设置为 SftpLocation。
folderPath 文件夹的路径。 如果要使用通配符来筛选文件夹,请跳过此设置并在活动源设置中指定路径。
fileName 指定的 folderPath 下的文件名。 如果要使用通配符来筛选文件,请跳过此设置并在活动源设置中指定文件名。

示例:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<SFTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "SftpLocation",
                "folderPath": "root/folder/subfolder"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

复制活动属性

有关可用于定义活动的各部分和属性的完整列表,请参阅管道一文。 本部分提供 SFTP 源支持的属性列表。

以 SFTP 作为源

Azure 数据工厂支持以下文件格式。 请参阅每一篇介绍基于格式的设置的文章。

SFTP 支持基于格式的复制源中 storeSettings 设置下的以下属性:

属性 描述 必需
type storeSettings 下的 type 属性必须设置为 SftpReadSettings。
找到要复制的文件
选项 1:静态路径
从数据集中指定的文件夹/文件路径复制。 若要复制文件夹中的所有文件,请另外将 wildcardFileName 指定为 *
选项 2:通配符
- wildcardFolderPath
带有通配符的文件夹路径,用于筛选源文件夹。
允许的通配符为 *(匹配零个或零个以上的字符)和 ?(匹配零个或单个字符);如果实际文件夹名称中包含通配符或此转义字符,请使用 ^ 进行转义。
如需更多示例,请参阅文件夹和文件筛选器示例
选项 2:通配符
- wildcardFileName
指定的 folderPath/wildcardFolderPath 下带有通配符的文件名,用于筛选源文件。
允许的通配符为 *(匹配零个或更多个字符)和 ?(匹配零个或单个字符);如果实际文件名中包含通配符或此转义字符,请使用 ^ 进行转义。 如需更多示例,请参阅文件夹和文件筛选器示例
选项 3:文件列表
- fileListPath
表示要复制指定文件集。 指向一个文本文件,其中包含要复制的文件列表(每行一个文件,带有数据集中所配置路径的相对路径)。
使用此选项时,请不要在数据集中指定文件名。 如需更多示例,请参阅文件列表示例
其他设置
recursive 指示是要从子文件夹中以递归方式读取数据,还是只从指定的文件夹中读取数据。 当 recursive 设置为 true 且接收器是基于文件的存储时,将不会在接收器上复制或创建空的文件夹或子文件夹。
允许的值为 true(默认值)和 false
如果配置 fileListPath,则此属性不适用。
deleteFilesAfterCompletion 指示是否会在二进制文件成功移到目标存储后将其从源存储中删除。 文件删除按文件进行。因此,当复制活动失败时,你会看到一些文件已经复制到目标并从源中删除,而另一些文件仍保留在源存储中。
此属性仅在二进制文件复制方案中有效。 默认值:false。
modifiedDatetimeStart 文件根据“上次修改时间”属性进行筛选。
如果文件的上次修改时间大于或等于 modifiedDatetimeStart 并且小于 modifiedDatetimeEnd,则会选择这些文件。 该时间应用于 UTC 时区,格式为“2018-12-01T05:00:00Z”。
属性可以为 NULL,这意味着不向数据集应用任何文件特性筛选器。 如果 modifiedDatetimeStart 具有日期/时间值,但 modifiedDatetimeEnd 为 NULL,则意味着将选中“上次修改时间”属性大于或等于该日期/时间值的文件。 如果 modifiedDatetimeEnd 具有日期/时间值,但 modifiedDatetimeStart 为 NULL,则意味着将选中“上次修改时间”属性小于该日期/时间值的文件。
如果配置 fileListPath,则此属性不适用。
modifiedDatetimeEnd 同上。
enablePartitionDiscovery 对于已分区的文件,请指定是否从文件路径分析分区,并将它们添加为附加的源列。
允许的值为 false(默认)和 true 。
partitionRootPath 启用分区发现时,请指定绝对根路径,以便将已分区文件夹读取为数据列。

如果未指定,默认情况下,
- 在数据集或源的文件列表中使用文件路径时,分区根路径是在数据集中配置的路径。
- 使用通配符文件夹筛选器时,分区根路径是第一个通配符前的子路径。

例如,假设你将数据集中的路径配置为“root/folder/year=2020/month=08/day=27”:
- 如果将分区根路径指定为“root/folder/year=2020”,则除了文件内的列外,复制活动还将生成另外两个列 monthday,其值分别为“08”和“27”。
- 如果未指定分区根路径,则不会生成额外的列。
maxConcurrentConnections 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。
disableChunking 在通过 FTP 复制数据时,服务会首先尝试获取文件长度,然后将文件分为多个部分以并行方式读取。 指定 FTP 服务器是支持获取文件长度还是要从某个偏移量读取。
允许的值为:false(默认)和 true 。

示例:

"activities":[
    {
        "name": "CopyFromSFTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Delimited text input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "formatSettings":{
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 10
                },
                "storeSettings":{
                    "type": "SftpReadSettings",
                    "recursive": true,
                    "wildcardFolderPath": "myfolder*A",
                    "wildcardFileName": "*.csv",
                    "disableChunking": false
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

以 SFTP 作为接收器

Azure 数据工厂支持以下文件格式。 请参阅每一篇介绍基于格式的设置的文章。

SFTP 支持基于格式的复制接收器中 storeSettings 设置下的以下属性:

属性 描述 必需
type storeSettings 下的 type 属性必须设置为 SftpWriteSettings。
copyBehavior 定义以基于文件的数据存储中的文件为源时的复制行为。

允许值包括:
- PreserveHierarchy(默认):将文件层次结构保留到目标文件夹中。 指向源文件夹的源文件相对路径与指向目标文件夹的目标文件相对路径相同。
- FlattenHierarchy:源文件夹中的所有文件都位于目标文件夹的第一级中。 目标文件具有自动生成的名称。
- MergeFiles:将源文件夹中的所有文件合并到一个文件中。 如果指定了文件名,则合并文件的名称为指定名称。 否则,它是自动生成的文件名。
maxConcurrentConnections 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。
useTempFileRename 指示是将其上传到临时文件并重命名,还是将其直接写入到目标文件夹或文件位置。 默认情况下,该服务先将数据写入到临时文件,然后在上传完成时重命名文件。 采取此顺序有助于 (1) 避免可能会导致文件损坏的冲突(如果有其他进程对同一文件进行写入操作);(2) 在整个传输过程中确保文件的原始版本存在。 如果 SFTP 服务器不支持重命名操作,请禁用此选项,并确保不会对目标文件进行并发写入操作。 有关详细信息,请查看此表末尾的故障排除提示。 否。 默认值为 true
operationTimeout 每个对 SFTP 服务器的写入请求超时之前的等待时间。默认值为 60 分钟 (01:00:00)。

提示

如果将数据写入 SFTP 时遇到“UserErrorSftpPathNotFound”、“UserErrorSftpPermissionDenied”或“SftpOperationFail”错误,并且你使用的 SFTP 用户确实有适当的权限,请查看 SFTP 服务器是否支持文件重命名操作。 如果不支持,请禁用“使用临时文件上传”(useTempFileRename) 选项,然后重试。 若要详细了解此属性,请查看上面的表。 如果将自承载集成运行时用于执行复制活动,请确保使用 4.6 或更高版本。

示例:

"activities":[
    {
        "name": "CopyToSFTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "BinarySink",
                "storeSettings":{
                    "type": "SftpWriteSettings",
                    "copyBehavior": "PreserveHierarchy"
                }
            }
        }
    }
]

文件夹和文件筛选器示例

本部分介绍对文件夹路径和文件名使用通配符筛选器后产生的行为。

folderPath fileName recursive 源文件夹结构和筛选器结果(用粗体表示的文件已检索)
Folder* (为空,使用默认值) false FolderA
    File1.csv
    File2.json
    Subfolder1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* (为空,使用默认值) true FolderA
    File1.csv
    File2.json
    Subfolder1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* *.csv false FolderA
    File1.csv
    File2.json
    Subfolder1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* *.csv FolderA
    File1.csv
    File2.json
    Subfolder1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv

文件列表示例

此表介绍了在复制活动源中使用文件列表路径时产生的行为。 假设有以下源文件夹结构,并且要复制粗体类型的文件:

示例源结构 FileListToCopy.txt 中的内容 Azure 数据工厂配置
root
    FolderA
        File1.csv
        File2.json
        Subfolder1
            File3.csv
            File4.json
            File5.csv
    元数据
        FileListToCopy.txt
File1.csv
Subfolder1/File3.csv
Subfolder1/File5.csv
在数据集中:
- 文件夹路径:root/FolderA

在复制活动源中:
- 文件列表路径:root/Metadata/FileListToCopy.txt

文件列表路径指向同一数据存储中的一个文本文件,该文件包含要复制的文件列表(每行一个文件,带有数据集中所配置路径的相对路径)。

映射数据流属性

在映射数据流中转换数据时,可以在 SFTP 中读取和写入以下格式的文件:

格式特定的设置位于该格式的文档中。 有关详细信息,请参阅映射数据流中的源转换映射数据流中的接收器转换

注意

映射数据流目前不支持 SSH 主机密钥验证。

注意

若要访问本地 SFTP 服务器,需要有使用专用终结点的 Azure 数据工厂或 Synapse 工作区托管虚拟网络。 有关详细步骤,请参阅此教程

源转换

下表列出了 SFTP 源支持的属性。 你可以在“源选项”选项卡中编辑这些属性。在使用内联数据集时,你会看到其他设置,这些设置与数据集属性部分描述的属性相同。

名称 说明 必需 允许的值 数据流脚本属性
通配符路径 如果使用通配符模式,则是指示 ADF 在单个“源转换”中遍历每个匹配的文件夹和文件。 这是在单个流中处理多个文件的有效方法。 String[] wildcardPaths
分区根路径 如果文件源中存在 key=value 格式(例如 year=2019)的分区文件夹,则可以向该分区文件夹树的顶层分配数据流中的列名称。 字符串 partitionRootPath
允许找不到文件 如果为 true,则找不到文件时不会引发错误。 truefalse ignoreNoFilesFound
文件列表 这是一个文件集。 创建一个文本文件,其中包含要处理的相对路径文件的列表。 指向此文本文件。 truefalse fileList
用于存储文件名的列 将源文件的名称存储在数据的列中。 请在此处输入新列名称以存储文件名字符串。 字符串 rowUrlColumn
完成后 选择在数据流运行完成后对源文件不做任何操作、删除源文件或移动源文件。 移动路径是相对路径。 删除:truefalse
Move:['<from>', '<to>']
purgeFiles
moveFiles
按上次修改时间筛选 通过指定上次修改时间的日期范围,可以筛选要处理哪些文件。 所有日期时间均采用 UTC 格式。 时间戳 ModifiedAfter
modifiedBefore

SFTP 源脚本示例

使用 SFTP 数据集作为源类型时,关联的数据流脚本为:

source(allowSchemaDrift: true,
	validateSchema: false,
	ignoreNoFilesFound: true,
	purgeFiles: true,
	fileList: true,
	modifiedAfter: (toTimestamp(1647388800000L)),
	modifiedBefore: (toTimestamp(1647561600000L)),
	partitionRootPath: 'partdata',
	wildcardPaths:['partdata/**/*.csv']) ~> SFTPSource

接收器转换

下表列出了 SFTP 接收器支持的属性。 可以在“设置”选项卡中编辑这些属性。使用内联数据集时,你会看到其他设置,这些设置与数据集属性部分描述的属性相同。

名称 说明 必需 允许的值 数据流脚本属性
清除文件夹 确定是否在写入数据前清除目标文件夹。 truefalse truncate
文件名选项 写入的数据的命名格式。 默认情况下,每个分区有一个 part-#####-tid-<guid> 格式的文件。 模式:字符串
每分区:String[]
将文件命名为列数据:字符串
将文件夹命名为列数据:字符串
输出到单个文件:['<fileName>']
filePattern
partitionFileNames
rowUrlColumn
rowFolderUrlColumn
partitionFileNames
全部引用 确定是否将所有值括在引号中。 truefalse quoteAll

SFTP 接收器脚本示例

使用 SFTP 数据集作为接收器类型时,关联的数据流脚本为:

IncomingStream sink(allowSchemaDrift: true,
	validateSchema: false,
	filePattern:'loans[n].csv',
	truncate: true,
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true) ~> SFTPSink

查找活动属性

有关 Lookup 活动属性的详细信息,请参阅 Lookup 活动

GetMetadata 活动属性

有关 GetMetadata 活动属性的详细信息,请参阅GetMetadata 活动

Delete 活动属性

有关 Delete 活动属性的详细信息,请参阅 Delete 活动

旧模型

注意

仍会按原样支持以下模型,以实现后向兼容性。 建议你使用前面讨论的新模型,因为创作 UI 已切换到生成新模型。

旧数据集模型

属性 描述 必需
type 数据集的 type 属性必须设置为 FileShare。
folderPath 文件夹的路径。 支持通配符筛选器。 允许的通配符为 *(匹配零个或零个以上的字符)和 ?(匹配零个或单个字符);如果实际文件名称中包含通配符或此转义字符,请使用 ^ 进行转义。

示例:“rootfolder/subfolder/”,请参阅文件夹和文件筛选器示例中的更多示例。
fileName 指定的“folderPath”下的文件的“名称或通配符筛选器”。 如果没有为此属性指定任何值,则数据集会指向文件夹中的所有文件。

对于筛选器,允许的通配符为 *(匹配零个或零个以上的字符)和 ?(匹配零个或单个字符)。
- 示例 1:"fileName": "*.csv"
- 示例 2:"fileName": "???20180427.txt"
如果实际文件夹名内具有通配符或此转义符,请使用 ^ 进行转义。
modifiedDatetimeStart 文件根据“上次修改时间”属性进行筛选。 如果文件的上次修改时间大于或等于 modifiedDatetimeStart 并且小于 modifiedDatetimeEnd,则会选择这些文件。 该时间应用于 UTC 时区,格式为“2018-12-01T05:00:00Z”。

当你要对大量文件进行文件筛选时,启用此设置会影响数据移动的整体性能。

属性可以为 NULL,这意味着不向数据集应用任何文件特性筛选器。 如果 modifiedDatetimeStart 具有日期/时间值,但 modifiedDatetimeEnd 为 NULL,则意味着将选中“上次修改时间”属性大于或等于该日期/时间值的文件。 如果 modifiedDatetimeEnd 具有日期/时间值,但 modifiedDatetimeStart 为 NULL,则意味着将选中“上次修改时间”属性小于该日期/时间值的文件。
modifiedDatetimeEnd 文件根据“上次修改时间”属性进行筛选。 如果文件的上次修改时间大于或等于 modifiedDatetimeStart 并且小于 modifiedDatetimeEnd,则会选择这些文件。 该时间应用于 UTC 时区,格式为“2018-12-01T05:00:00Z”。

当你要对大量文件进行文件筛选时,启用此设置会影响数据移动的整体性能。

属性可以为 NULL,这意味着不向数据集应用任何文件特性筛选器。 如果 modifiedDatetimeStart 具有日期/时间值,但 modifiedDatetimeEnd 为 NULL,则意味着将选中“上次修改时间”属性大于或等于该日期/时间值的文件。 如果 modifiedDatetimeEnd 具有日期/时间值,但 modifiedDatetimeStart 为 NULL,则意味着将选中“上次修改时间”属性小于该日期/时间值的文件。
format 若要在基于文件的存储之间按原样复制文件(二进制副本),可以在输入和输出数据集定义中跳过格式节。

若要分析具有特定格式的文件,以下是受支持的文件格式类型:TextFormat、JsonFormat、AvroFormat、OrcFormat 和 ParquetFormat 。 请将格式中的“type”属性设置为上述值之一。 有关详细信息,请参阅文本格式Json 格式Avro 格式Orc 格式Parquet 格式部分。
否(仅适用于二进制复制方案)
compression 指定数据的压缩类型和级别。 有关详细信息,请参阅受支持的文件格式和压缩编解码器
支持的类型为 GZipDeflateBZip2ZipDeflate
支持的级别为“最佳”和“最快”。

提示

如需复制文件夹下的所有文件,请仅指定 folderPath
若要复制具有指定名称的单个文件,请使用文件夹部分指定 folderPath 并使用文件名指定 fileName。
如需复制文件夹下的一部分文件,请使用文件夹部分指定 folderPath 并使用通配符筛选器指定 fileName。

注意

如果你将“fileFilter”属性用于文件筛选器,则系统仍按原样支持它,但我们建议你从现在起使用添加到“fileName”的新筛选器功能。

示例:

{
    "name": "SFTPDataset",
    "type": "Datasets",
    "properties": {
        "type": "FileShare",
        "linkedServiceName":{
            "referenceName": "<SFTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "folderPath": "folder/subfolder/",
            "fileName": "*",
            "modifiedDatetimeStart": "2018-12-01T05:00:00Z",
            "modifiedDatetimeEnd": "2018-12-01T06:00:00Z",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ",",
                "rowDelimiter": "\n"
            },
            "compression": {
                "type": "GZip",
                "level": "Optimal"
            }
        }
    }
}

旧复制活动源模型

属性 描述 必需
type 复制活动源的 type 属性必须设置为 FileSystemSource
recursive 指示是要从子文件夹中以递归方式读取数据,还是只从指定的文件夹中读取数据。 当 recursive 设置为 true 且接收器是基于文件的存储时,将不会在接收器上复制或创建空的文件夹和子文件夹。
允许的值为 true(默认值)和 false
maxConcurrentConnections 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。

示例:

"activities":[
    {
        "name": "CopyFromSFTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<SFTP input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "FileSystemSource",
                "recursive": true
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

有关 Copy 活动支持作为源和接收器的数据存储列表,请参阅支持的数据存储