使用 Azure Data Factory 或 Azure Synapse Analytics 在 SFTP 伺服器中複製和轉換資料

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

本文概述如何使用「複製活動」在安全 FTP (SFTP) 伺服器中向外和向內複製資料,並使用資料流程在 SFTP 伺服器中轉換資料。 若要深入了解,請閱讀 Azure Data FactoryAzure Synapse Analytics 的介紹文章。

支援的功能

此 SFTP 連接器支援下列功能:

支援的功能 IR
複製活動 (來源/接收) ① ②
對應資料流 (來源/接收)
查閱活動 ① ②
GetMetadata 活動 ① ②
刪除活動 ① ②

① Azure 整合執行階段 ② 自我裝載整合執行階段

具體而言,SFTP 連接器支援:

  • 使用基本驗證SSH 公開金鑰驗證多重要素驗證,在 SFTP 伺服器中向外和向內複製檔案。
  • 依原樣複製檔案,或使用支援的檔案格式和壓縮轉碼器來剖析或產生檔案。

必要條件

如果您的資料存放區位於內部部署網路、Azure 虛擬網路或 Amazon 虛擬私人雲端中,則必須設定自我裝載整合執行階段以與其連線。

如果您的資料存放區是受控雲端資料服務,則可使用 Azure Integration Runtime。 如果只能存取防火牆規則中核准的 IP,您可以將 Azure Integration Runtime IP 新增至允許清單。

您也可以使用 Azure Data Factory 中的受控虛擬網路整合執行階段功能來存取內部部署網路,而不需要安裝和設定自我裝載整合執行階段。

如需 Data Factory 支援的網路安全性機制和選項的詳細資訊,請參閱資料存取策略

開始使用

若要透過管線執行複製活動,您可以使用下列其中一個工具或 SDK:

使用 UI 建立 SFTP 連結服務

使用下列步驟,在 Azure 入口網站 UI 中建立 SFTP 連結服務。

  1. 前往 Azure Data Factory 或 Synapse 工作區的 [管理] 索引標籤,選取 [連結服務],然後按一下 [新增]:

  2. 搜尋 SFTP 並選取 SFTP 連接器。

    Screenshot of the SFTP connector.

  3. 設定服務詳細資料,測試連線,然後建立新的連結服務。

    Screenshot of configuration for an SFTP linked service.

連接器設定詳細資料

下列各節提供屬性的相關詳細資料,這些屬性用來定義 SFTP 專屬的實體。

連結服務屬性

以下是針對 SFTP 連結服務支援的屬性:

屬性 描述 必要
type 類型屬性必須設定為 Sftp Yes
host SFTP 伺服器的名稱或 IP 位址。 Yes
port SFTP 伺服器所接聽的連接埠。
允許的值為整數,預設值為 22
No
skipHostKeyValidation 指定是否略過主機金鑰驗證。
允許的值為 truefalse (預設值)。
No
hostKeyFingerprint 指定主機金鑰的指紋。 如果 "skipHostKeyValidation" 設定為 false,則為必要。
authenticationType 指定驗證類型。
允許的值為 BasicSshPublicKeyMultiFactor。 如需更多屬性,請參閱使用基本驗證一節。 如需 JSON 範例,請參閱使用 SSH 公開金鑰驗證一節。
Yes
connectVia 用來連線到資料存放區的整合執行階段。 若要深入了解,請參閱必要條件一節。 如未指定整合執行階段,服務將使用預設的 Azure Integration Runtime。 No

使用基本驗證

若要使用基本驗證,請將 authenticationType 屬性設定為 Basic,並指定下列屬性,以及上一節所介紹的 SFTP 連接器泛型屬性:

屬性 描述 必要
userName 可存取 SFTP 伺服器的使用者。 Yes
password 使用者 (userName) 的密碼。 將此欄位標記為 SecureString 以將其安全地儲存,或參考 Azure 金鑰保存庫中儲存的祕密 Yes

範例:

{
    "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 伺服器的使用者。 Yes
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︰使用私密金鑰 filePath 的 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 Data Factory 支援下列檔案格式。 請參閱每篇文章,以取得以格式為基礎的設定。

在格式型資料集內的 location 設定下,SFTP 支援下列屬性:

屬性 描述 必要
type 在資料集內的 location 下,type 屬性必須設定為 SftpLocation Yes
folderPath 資料夾的路徑。 如果您想要使用萬用字元來篩選資料夾,則請略過此設定,並在活動來源設定中指定路徑。 No
fileName 所指定 folderPath 下的檔案名稱。 如果您想要使用萬用字元來篩選檔案,則請略過此設定,並在活動來源設定中指定檔案名稱。 No

範例:

{
    "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 Data Factory 支援下列檔案格式。 請參閱每篇文章,以取得以格式為基礎的設定。

在格式型複製來源的 storeSettings 設定下,SFTP 支援下列屬性:

屬性 描述 必要
type storeSettings 下的 type 屬性必須設定為 SftpReadSettings Yes
找到要複製的檔案
選項 1:靜態路徑
請從資料集內的指定資料夾/檔案路徑複製。 如果您想要複製資料夾中的所有檔案,請另外將 wildcardFileName 指定為 *
選項 2:萬用字元
- wildcardFolderPath
含有萬用字元的資料夾路徑,可用來篩選來源資料夾。
允許的萬用字元為 * (比對零或多個字元) 和 ? (比對零或單一字元);如果您的實際資料夾名稱包含萬用字元或此逸出字元,請使用 ^ 來逸出。
如需更多範例,請參閱資料夾和檔案篩選範例
No
選項 2:萬用字元
- wildcardFileName
在指定 folderPath/wildcardFolderPath 下含有萬用字元的檔案名稱,用於篩選來源檔案。
允許的萬用字元為 * (比對零或多個字元) 和 ? (比對零或單一字元);如果您的實際檔案名稱包含萬用字元或此逸出字元,請使用 ^ 來逸出。 如需更多範例,請參閱資料夾和檔案篩選範例
Yes
選項 3:檔案清單
- fileListPath
指出此項目即可複製指定的檔案集。 請指向含有所要複製檔案清單的文字檔 (一行一個檔案,使用資料集中所設定路徑的相對路徑)。
當您使用此選項時,請不要指定資料集中的檔案名稱。 如需更多範例,請參閱檔案清單範例
No
其他設定
遞迴 指出是否從子資料夾、或只有從指定的資料夾,以遞迴方式讀取資料。 當遞迴設定為 true 且接收是檔案型存放區時,就不會在接收上複製或建立空的資料夾或子資料夾。
允許的值為 true (預設值) 和 false
設定 fileListPath 時,此屬性不適用。
No
deleteFilesAfterCompletion 指出成功移至目的地存放區之後,是否要從來源存放區中刪除二進位檔案。 檔案刪除會針對每個檔案執行,因此,當複製活動失敗時,您會看到已將某些檔案複製到目的地,而且已從來源刪除,而其他檔案仍保留在來源存放區上。
此屬性僅適用於二進位檔案複製案例。 預設值:false。
No
modifiedDatetimeStart 檔案會根據「上次修改時間」屬性進行篩選。
如果檔案的上次修改時間大於或等於 modifiedDatetimeStart 且小於 modifiedDatetimeEnd,則會選取檔案。 此時間會以 2018-12-01T05:00:00Z 格式套用至 UTC 時區。
此屬性可以是 NULL,這意謂著不會對資料集套用任何檔案屬性篩選。 當 modifiedDatetimeStart 有日期時間值,但 modifiedDatetimeEnd 為 NULL 時,表示系統將會選取上次修改時間屬性大於或等於此日期時間值的檔案。 當 modifiedDatetimeEnd 有日期時間值,但 modifiedDatetimeStart 為 NULL 時,則表示系統將會選取上次修改時間屬性小於此日期時間值的檔案。
設定 fileListPath 時,此屬性不適用。
No
modifiedDatetimeEnd 同上。 No
enablePartitionDiscovery 針對已分割的檔案,指定是否要從檔案路徑剖析分割區,並將其新增為其他來源資料行。
允許的值為 false (預設值) 和 true
No
partitionRootPath 啟用分割區探索時,請指定絕對根路徑,將已分割的資料夾當成資料行進行讀取。

如果未指定,則根據預設,
- 當您使用資料集中的檔案路徑或來源上的檔案清單時,分割區根路徑是資料集中所設定的路徑。
- 當您使用萬用字元資料夾篩選時,分割區根路徑是第一個萬用字元前面的子路徑。

例如,假設您將資料集中的路徑設定為 "root/folder/year=2020/month=08/day=27":
- 如果您將分割區根路徑指定為 "root/folder/year=2020",則除了檔案內的資料行之外,複製活動還會分別產生值為 "08" 和 "27" 的兩個資料行 monthday
- 如果未指定分割區根路徑,則不會產生額外的資料行。
No
maxConcurrentConnections 在活動執行期間建立至資料存放區的同時連線上限。 僅在想要限制並行連線時,才需要指定值。 No
disableChunking 從 SFTP 複製資料時,服務會先嘗試取得檔案長度,然後將檔案分成多個部分,接著平行讀取。 指定您的 SFTP 伺服器是否支援取得檔案長度,或需要從特定位移讀取。
允許的值為 false (預設值) 和 true
No

範例:

"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 Data Factory 支援下列檔案格式。 請參閱每篇文章,以取得以格式為基礎的設定。

在格式型複製接收的 storeSettings 設定下,SFTP 支援下列屬性:

屬性 描述 必要
type storeSettings 下的 type 屬性必須設定為 SftpWriteSettings Yes
copyBehavior 當來源是來自檔案型資料存放區的檔案時,會定義複製行為。

允許的值如下:
- PreserveHierarchy (預設值):保留目標資料夾中的檔案階層。 來源檔案到來源資料夾的相對路徑,與目標檔案到目標資料夾的相對路徑相同。
- FlattenHierarchy:來自來源資料夾的所有檔案都在目標資料夾的第一層中。 目標檔案會有自動產生的名稱。
- MergeFiles:將來源資料夾的所有檔案合併成一個檔案。 若已指定檔案名稱,合併檔案的名稱會是指定的名稱。 否則,就會是自動產生的檔案名稱。
No
maxConcurrentConnections 在活動執行期間建立至資料存放區的同時連線上限。 僅在想要限制並行連線時,才需要指定值。 No
useTempFileRename 指出要上傳至暫存檔案並重新命名,還是直接寫入目標資料夾或檔案位置。 根據預設,服務會先寫入到暫存檔案,然後在上傳完成時重新命名。 此順序有助於 (1) 避免在有其他程序寫入到相同檔案的情況下而發生可能會導致檔案損毀的衝突,(2) 確保傳輸期間有原始版本的檔案存在。 如果 SFTP 伺服器不支援重新命名作業,請停用此選項,並確定您不會同時寫入目標檔案。 如需詳細資訊,請參閱此資料表結尾處的疑難排解提示。 否。 預設值為 true
operationTimeout 對 SFTP 伺服器發出的每個寫入要求在逾時之前的等待時間。預設值為 60 分鐘 (01:00:00)。 No

提示

如果您在將資料寫入到 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 遞迴 來源資料夾結構和篩選結果 (會擷取以粗體顯示的檔案)
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 true FolderA
    File1.csv
    File2.json
    Subfolder1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv

檔案清單範例

下表描述在複製活動來源中使用檔案清單路徑時所產生的行為。 假設您的來源資料夾結構如下,且想要複製以粗體顯示的檔案:

範例來源結構 FileListToCopy.txt 中的內容 Azure Data Factory 設定

    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 Data Factory 或是採用私人端點的 Synapse 工作區受控虛擬網路。 請參閱此教學課程中的詳細步驟。

來源轉換

下表列出 SFTP 來源所支援的屬性。 您可以在 [來源選項] 索引標籤中編輯這些屬性。使用內嵌資料集時,您會看到其他設定,其與資料集屬性一節所述的屬性相同。

名稱 描述 必要 允許的值 資料流程指令碼屬性
萬用字元路徑 在單一來源轉換中,使用萬用字元模式會指示 ADF 循環檢查每個相符的資料夾和檔案。 這在單一流程內處理多個檔案時很有效。 No String[] wildcardPaths
分割區根路徑 如果您的檔案來源中有 key=value 格式的分割資料夾 (例如 year=2019),則可以將該分割區資料夾樹狀的最上層,指派給資料流程資料流中的資料行名稱。 No String partitionRootPath
允許找不到任何檔案 如果為 true,當找不到任何檔案時則不會擲回錯誤。 No truefalse ignoreNoFilesFound
檔案清單 這是檔案集。 建立文字檔,其中包含要處理的相對路徑檔案清單。 指向這個文字檔。 No truefalse fileList
要儲存檔案名稱的資料行 將來源檔案的名稱儲存在資料中的資料行。 在此輸入新的資料行名稱以儲存檔案名稱字串。 No String rowUrlColumn
完成後 選擇在資料流程後不操作來源檔案、刪除來源檔案、或移動來源檔案。 移動時的路徑是相對路徑。 No 刪除:truefalse
移動:['<from>', '<to>']
purgeFiles
moveFiles
依上次修改日期來篩選 您可以指定檔案上次修改的日期範圍,以篩選您處理的檔案。 所有日期時間都是 UTC 格式。 No 時間戳記 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 接收所支援的屬性。 您可以在 [設定] 索引標籤中編輯這些屬性。使用內嵌資料集時,您會看到其他設定,其與資料集屬性一節所述的屬性相同。

名稱 描述 必要 允許的值 資料流程指令碼屬性
清除資料夾 決定是否在寫入資料之前先清除目的地資料夾。 No truefalse truncate
檔案名稱選項 已寫入資料的命名格式。 依預設,每個分割區的一個檔案會是 part-#####-tid-<guid> 格式。 No 模式:String
每個分割區:String[]
將檔案命名為資料行資料:String
將資料夾命名為資料行資料:String
輸出至單一檔案:['<fileName>']
filePattern
partitionFileNames
rowUrlColumn
rowFolderUrlColumn
partitionFileNames
全部以引號括住 決定是否用引號括住所有的值。 No truefalse quoteAll

SFTP 接收指令碼範例

使用 SFTP 資料集作為接收類型時,相關聯的資料流程指令碼為:

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

查閱活動屬性

如需查閱活動屬性的相關資訊,請參閱查閱活動

GetMetadata 活動屬性

如需 GetMetadata 活動屬性的相關資訊,請參閱 GetMetadata 活動

刪除活動屬性

如需刪除活動屬性的相關資訊,請參閱刪除活動

舊版模型

注意

基於回溯相容性,仍照現狀支援下列模型。 建議您使用先前討論過的新模型,因為撰寫 UI 已改為產生新模型。

舊版資料集模型

屬性 描述 必要
type 資料集的 type 屬性必須設定為 FileShare Yes
folderPath 資料夾的路徑。 支援萬用字元篩選。 允許的萬用字元為 * (比對零或多個字元) 和 ? (比對零或單一字元);如果您的實際檔案名稱包含萬用字元或此逸出字元,請使用 ^ 來逸出。

範例:rootfolder/subfolder/,如需更多範例,請參閱資料夾和檔案篩選範例
Yes
fileName 所指定 "folderPath" 底下檔案的名稱或萬用字元篩選。 若未指定此屬性的值,資料集就會指向資料夾中的所有檔案。

針對篩選,允許的萬用字元為 * (符合零或多個字元) 和 ? (符合零或單一字元)。
- 範例 1:"fileName": "*.csv"
- 範例 2:"fileName": "???20180427.txt"
如果實際資料夾名稱內有萬用字元或逸出字元 ^,請使用此逸出字元來逸出。
No
modifiedDatetimeStart 檔案會根據「上次修改時間」屬性進行篩選。 如果檔案的上次修改時間大於或等於 modifiedDatetimeStart 且小於 modifiedDatetimeEnd,則會選取檔案。 此時間會以 2018-12-01T05:00:00Z 格式套用至 UTC 時區。

當您想要從大量檔案中篩選檔案時,啟用這項設定將影響資料移動的整體效能。

此屬性可以是 NULL,這意謂著不會對資料集套用任何檔案屬性篩選。 當 modifiedDatetimeStart 有日期時間值,但 modifiedDatetimeEnd 為 NULL 時,表示系統將會選取上次修改時間屬性大於或等於此日期時間值的檔案。 當 modifiedDatetimeEnd 有日期時間值,但 modifiedDatetimeStart 為 NULL 時,則表示系統將會選取上次修改時間屬性小於此日期時間值的檔案。
No
modifiedDatetimeEnd 檔案會根據「上次修改時間」屬性進行篩選。 如果檔案的上次修改時間大於或等於 modifiedDatetimeStart 且小於 modifiedDatetimeEnd,則會選取檔案。 此時間會以 2018-12-01T05:00:00Z 格式套用至 UTC 時區。

當您想要從大量檔案中篩選檔案時,啟用這項設定將影響資料移動的整體效能。

此屬性可以是 NULL,這意謂著不會對資料集套用任何檔案屬性篩選。 當 modifiedDatetimeStart 有日期時間值,但 modifiedDatetimeEnd 為 NULL 時,表示系統將會選取上次修改時間屬性大於或等於此日期時間值的檔案。 當 modifiedDatetimeEnd 有日期時間值,但 modifiedDatetimeStart 為 NULL 時,則表示系統將會選取上次修改時間屬性小於此日期時間值的檔案。
No
format 如果您想要在以檔案為基礎的存放區之間依原樣複製檔案 (二進位複製),請在輸入和輸出資料集定義中略過格式區段。

如果您想要以特定格式來剖析檔案,以下是支援的檔案格式類型:TextFormatJsonFormatAvroFormatOrcFormatParquetFormat。 將格式下的 type 屬性設定為這些值其中之一。 如需詳細資訊,請參閱文字格式Json 格式Avro 格式Orc 格式Parquet 格式章節。
否 (僅適用於二進位複製案例)
壓縮 指定此資料的壓縮類型和層級。 如需詳細資訊,請參閱支援的檔案格式和壓縮轉碼器
支援的類型為:GZip、Deflate、BZip2 及 ZipDeflate
支援的層級為 OptimalFastest
No

提示

若要複製資料夾下的所有檔案,請只指定 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 Yes
遞迴 指出是否從子資料夾、或只有從指定的資料夾,以遞迴方式讀取資料。 當遞迴設定為 true 且接收是檔案型存放區時,就不會在接收上複製或建立空的資料夾和子資料夾。
允許的值為 true (預設值) 和 false
No
maxConcurrentConnections 在活動執行期間建立至資料存放區的同時連線上限。 僅在想要限制並行連線時,才需要指定值。 No

範例:

"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>"
            }
        }
    }
]

如需複製活動所支援作為來源和接收器的資料存放區清單,請參閱支援的資料存放區