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

適用于: Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用于企業的單一分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告等所有專案。 瞭解如何 免費啟動新的試用版

本文概述如何使用「複製活動」從安全 FTP (SFTP) 伺服器複製資料,以及使用資料流程轉換 SFTP 伺服器中的資料。 若要深入瞭解,請閱讀 Azure Data Factory 或 Azure Synapse Analytics 的簡介文章

支援的功能

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

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

(1) Azure 整合執行時間 (2) 自我裝載整合執行時間

具體來說,SFTP 連接器支援:

  • 使用 基本 SSH 公開金鑰 多重要素 驗證,將檔案從 SFTP 伺服器複製至 SFTP 伺服器。
  • 以原樣複製檔案,或使用支援的檔案格式和壓縮編解碼器 剖析或產生檔案

必要條件

如果您的資料存放區位於內部部署網路、Azure 虛擬網路或 Amazon Virtual Private Cloud 內,您必須設定 自我裝載整合執行時間 以連線到它。

如果您的資料存放區是受控雲端資料服務,您可以使用 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.

連線or 組態詳細資料

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

連結的服務屬性

SFTP 連結服務支援下列屬性:

屬性 描述 必要
type type 屬性必須設定為 Sftp Yes
host SFTP 伺服器的名稱或 IP 位址。 Yes
port SFTP 伺服器正在接聽的埠。
允許的值是整數,預設值為 22
No
skipHostKeyValidation 指定是否略過主機金鑰驗證。
允許的值為 true false (預設值)。
No
hostKeyFingerprint 指定主機金鑰的指紋。 是,如果 「skipHostKeyValidation」 設定為 false。
authenticationType 指定驗證類型。
允許的值為 Basic SshPublicKey MultiFactor 。 如需更多屬性,請參閱 使用基本驗證 一節。 如需 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
密碼 如果金鑰檔案或金鑰內容受到傳遞片語的保護,請指定密碼或密碼來解密私密金鑰。 將此欄位標示為 SecureString 以安全地儲存,或 參考儲存在 Azure 金鑰保存庫中 的秘密。 是,如果私密金鑰檔案或金鑰內容受到傳遞片語的保護。

注意

SFTP 連接器支援 RSA/DSA OpenSSH 金鑰。 請確定金鑰檔案內容開頭為 「-----BEGIN [RSA/DSA] PRI加值稅E 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 屬性必須設定為 SftpRead設定 Yes
找出要複製的檔案
選項 1:靜態路徑
從資料集中指定的資料夾/檔案路徑複製。 如果您想要從資料夾複製所有檔案,請另外指定 wildcardFileName*
選項 2:萬用字元
- 萬用字元FolderPath
包含萬用字元的資料夾路徑,用來篩選源資料夾。
允許的萬用字元為 * (符合零或多個字元)和 ? (符合零或單一字元;如果實際的資料夾名稱內有萬用字元或這個逸出字元,請使用 ^ 逸出。
如需更多範例,請參閱 資料夾和檔案篩選範例
No
選項 2:萬用字元
- 萬用字元FileName
具有指定 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 時,表示選取上次修改屬性大於或等於 datetime 值的檔案。 當 modifiedDatetimeEnd 具有日期時間值但 modifiedDatetimeStart 為 Null 時,表示上次修改屬性小於選取 datetime 值的檔案。
當您設定 fileListPath 時,這個屬性不適用。
No
modifiedDatetimeEnd 同上。 No
enablePartitionDiscovery 針對已分割的檔案,指定是否要從檔案路徑剖析分割區,並將其新增為其他來源資料行。
允許的值為 false (預設值)和 true
No
partitionRootPath 啟用資料分割探索時,請指定絕對根路徑,以便將分割區資料夾讀取為數據行。

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

例如,假設您在資料集中將路徑設定為 「root/folder/year=2020/month=08/day=27」:
- 如果您將分割區根路徑指定為 「root/folder/year=2020」,除了檔案內的資料行之外,複製活動還會另外產生兩 month 個數據行, day 且值 「08」 和 「27」。
- 如果未指定分割區根路徑,則不會產生任何額外的資料行。
No
maxConcurrent連線ions 在活動執行期間,與資料存放區建立的並行連線上限。 只有在您想要限制並行連線時,才指定值。 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 屬性必須設定為 SftpWrite設定 Yes
copyBehavior 當來源是檔案型資料存放區中的檔案時,定義複製行為。

允許的值如下:
- PreserveHierarchy (預設值) :保留目的檔案夾中的檔案階層。 源檔案至源資料夾的相對路徑與目標檔案的相對路徑與目的檔案夾的相對路徑相同。
- FlattenHierarchy :源資料夾中的所有檔案都位於目的檔案夾的第一層。 目標檔案具有自動產生的名稱。
- MergeFiles :將所有檔案從源資料夾合併到一個檔案。 如果指定檔案名,合併的檔案名就是指定的名稱。 否則,它是自動產生的檔案名。
No
maxConcurrent連線ions 在活動執行期間,與資料存放區建立的並行連線上限。 只有在您想要限制並行連線時,才指定值。 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
    子資料夾1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* (空白,使用預設值) true FolderA
    File1.csv
    File2.json
    子資料夾1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* *.csv false FolderA
    File1.csv
    File2.json
    子資料夾1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* *.csv true FolderA
    File1.csv
    File2.json
    子資料夾1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv

檔案清單範例

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

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

    FolderA
        File1.csv
        File2.json
        子資料夾1
            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[] 萬用字元路徑
資料分割根路徑 如果您的檔案來源 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[]
將檔案命名為數據行資料:字串
將資料夾命名為數據行資料:字串
輸出至單一檔案: ['<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 時,表示選取上次修改屬性大於或等於 datetime 值的檔案。 當 modifiedDatetimeEnd 具有日期時間值但 modifiedDatetimeStart 為 Null 時,表示上次修改屬性小於選取 datetime 值的檔案。
No
modifiedDatetimeEnd 檔案會根據上次修改 的屬性 進行篩選。 如果上次修改的時間大於或等於 modifiedDatetimeStart 且小於 modifiedDatetimeEnd ,則會選取檔案。 時間會以 2018-12-01T05:00:00Z 的格式 套用至 UTC 時區。

當您想要從大量檔案執行檔案篩選時,資料移動的整體效能將會受到啟用此設定的影響。

屬性可以是 Null,這表示不會將任何檔案屬性篩選套用至資料集。 當 modifiedDatetimeStart 有日期時間值但 modifiedDatetimeEnd 為 Null 時,表示選取上次修改屬性大於或等於 datetime 值的檔案。 當 modifiedDatetimeEnd 具有日期時間值但 modifiedDatetimeStart 為 Null 時,表示上次修改屬性小於選取 datetime 值的檔案。
No
format 如果您想要在檔案型存放區之間複製檔案(二進位複製),請略過輸入和輸出資料集定義中的 format 區段。

如果您想要以特定格式剖析檔案,則支援下列檔案格式類型: TextFormat JsonFormat AvroFormat OrcFormat ParquetFormat 。 將 格式下的 type 屬性設定為下列其中一個值。 如需詳細資訊,請參閱 文字格式、 Json 格式 Avro 格式 Orc 格式 Parquet 格式 小節。
否 (僅適用于二進位複製案例)
壓縮 指定資料的壓縮類型和層級。 如需詳細資訊,請參閱 支援的檔案格式和壓縮編解碼器
支援的類型包括 GZip、 Deflate BZip2 ZipDeflate
支援的層級是 最佳 最快的 層級。
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
maxConcurrent連線ions 在活動執行期間,與資料存放區建立的並行連線上限。 只有在您想要限制並行連線時,才指定值。 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>"
            }
        }
    }
]

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