使用 Azure 数据工厂或 Azure Synapse Analytics 在 SFTP 服务器中复制和转换数据
适用于:Azure 数据工厂 Azure Synapse Analytics
本文概述如何使用复制活动从/向安全 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 链接服务。
浏览到 Azure 数据工厂或 Synapse 工作区中的“管理”选项卡并选择“链接服务”,然后单击“新建”:
搜索 SFTP 并选择 SFTP 连接器。
配置服务详细信息、测试连接并创建新的链接服务。
连接器配置详细信息
以下部分提供了有关各属性的详细信息,这些属性用于定义特定于 SFTP 的实体。
链接服务属性
SFTP 链接服务支持以下属性:
属性 | 描述 | 必需 |
---|---|---|
type | type 属性必须设置为 Sftp。 | 是 |
host | SFTP 服务器的名称或 IP 地址。 | 是 |
port | SFTP 服务器侦听的端口。 允许的值为整数,默认值为 22。 |
否 |
skipHostKeyValidation | 指定是否要跳过主机密钥验证。 允许的值为 true 和 true(默认值)。 |
否 |
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”中指定了自承载类型的集成运行时的情况下,此项才适用。 | 指定 privateKeyPath 或 privateKeyContent 。 |
privateKeyContent | Base64 编码的 SSH 私钥内容。 SSH 私钥应采用 OpenSSH 格式。 将此字段标记为 SecureString 以安全地存储它,或引用存储在 Azure 密钥保管库中的机密。 | 指定 privateKeyPath 或 privateKeyContent 。 |
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”,则除了文件内的列外,复制活动还将生成另外两个列 month 和 day ,其值分别为“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 源支持的属性。 你可以在“源选项”选项卡中编辑这些属性。在使用内联数据集时,你会看到其他设置,这些设置与数据集属性部分描述的属性相同。
名称 | 说明 | 必需 | 允许的值 | 数据流脚本属性 |
---|---|---|---|---|
通配符路径 | 如果使用通配符模式,则是指示 ADF 在单个“源转换”中遍历每个匹配的文件夹和文件。 这是在单个流中处理多个文件的有效方法。 | 否 | String[] | wildcardPaths |
分区根路径 | 如果文件源中存在 key=value 格式(例如 year=2019 )的分区文件夹,则可以向该分区文件夹树的顶层分配数据流中的列名称。 |
否 | 字符串 | partitionRootPath |
允许找不到文件 | 如果为 true,则找不到文件时不会引发错误。 | 否 | true 或 false |
ignoreNoFilesFound |
文件列表 | 这是一个文件集。 创建一个文本文件,其中包含要处理的相对路径文件的列表。 指向此文本文件。 | 否 | true 或 false |
fileList |
用于存储文件名的列 | 将源文件的名称存储在数据的列中。 请在此处输入新列名称以存储文件名字符串。 | 否 | 字符串 | rowUrlColumn |
完成后 | 选择在数据流运行完成后对源文件不做任何操作、删除源文件或移动源文件。 移动路径是相对路径。 | 否 | 删除:true 或 false 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 接收器支持的属性。 可以在“设置”选项卡中编辑这些属性。使用内联数据集时,你会看到其他设置,这些设置与数据集属性部分描述的属性相同。
名称 | 说明 | 必需 | 允许的值 | 数据流脚本属性 |
---|---|---|---|---|
清除文件夹 | 确定是否在写入数据前清除目标文件夹。 | 否 | true 或 false |
truncate |
文件名选项 | 写入的数据的命名格式。 默认情况下,每个分区有一个 part-#####-tid-<guid> 格式的文件。 |
否 | 模式:字符串 每分区:String[] 将文件命名为列数据:字符串 将文件夹命名为列数据:字符串 输出到单个文件: ['<fileName>'] |
filePattern partitionFileNames rowUrlColumn rowFolderUrlColumn partitionFileNames |
全部引用 | 确定是否将所有值括在引号中。 | 否 | true 或 false |
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 | 指定数据的压缩类型和级别。 有关详细信息,请参阅受支持的文件格式和压缩编解码器。 支持的类型为 GZip、Deflate、BZip2 和 ZipDeflate。 支持的级别为“最佳”和“最快”。 |
否 |
提示
如需复制文件夹下的所有文件,请仅指定 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 活动支持作为源和接收器的数据存储列表,请参阅支持的数据存储。