Kopieren von Daten von einem FTP-Server mithilfe von Azure Data Factory oder Synapse Analytics

GILT FÜR: Azure Data Factory Azure Synapse Analytics

Tipp

Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!

In diesem Artikel wird beschrieben, wie Sie Daten vom FTP-Server kopieren. Weitere Informationen finden Sie in den Einführungsartikeln zu Azure Data Factory und Synapse Analytics.

Unterstützte Funktionen

Dieser FTP-Anschluss wird für die folgenden Funktionen unterstützt:

Unterstützte Funktionen IR
Kopieraktivität (Quelle/-) 1.6
Lookup-Aktivität 1.6
GetMetadata-Aktivität 1.6
Delete-Aktivität 1.6

① Azure Integration Runtime ② Selbstgehostete Integration Runtime

Der FTP-Connector unterstützt insbesondere Folgendes:

Der FTP-Connector unterstützt die Ausführung des FTP-Servers im passiven Modus. Der aktive Modus wird nicht unterstützt.

Voraussetzungen

Wenn sich Ihr Datenspeicher in einem lokalen Netzwerk, in einem virtuellen Azure-Netzwerk oder in einer virtuellen privaten Amazon-Cloud befindet, müssen Sie eine selbstgehostete Integration Runtime konfigurieren, um eine Verbindung herzustellen.

Handelt es sich bei Ihrem Datenspeicher um einen verwalteten Clouddatendienst, können Sie die Azure Integration Runtime verwenden. Ist der Zugriff auf IP-Adressen beschränkt, die in den Firewallregeln genehmigt sind, können Sie Azure Integration Runtime-IPs zur Positivliste hinzufügen.

Sie können auch das Feature managed virtual network integration runtime (Integration Runtime für verwaltete virtuelle Netzwerke) in Azure Data Factory verwenden, um auf das lokale Netzwerk zuzugreifen, ohne eine selbstgehostete Integration Runtime zu installieren und zu konfigurieren.

Weitere Informationen zu den von Data Factory unterstützten Netzwerksicherheitsmechanismen und -optionen finden Sie unter Datenzugriffsstrategien.

Erste Schritte

Sie können eines der folgenden Tools oder SDKs verwenden, um die Kopieraktivität mit einer Pipeline zu verwenden:

Erstellen eines verknüpften Dienstes mit einem FTP-Server über die Benutzeroberfläche

Gehen Sie wie folgt vor, um einen verknüpften Dienst mit einem FTP-Server in der Benutzeroberfläche des Azure-Portals zu erstellen.

  1. Navigieren Sie in Ihrem Azure Data Factory- oder Synapse-Arbeitsbereich zu der Registerkarte „Verwalten“, wählen Sie „Verknüpfte Dienste“ aus und klicken Sie dann auf „Neu“:

  2. Suchen Sie nach FTP, und wählen Sie den FTP-Connector aus.

    Screenshot of the FTP connector.

  3. Konfigurieren Sie die Dienstdetails, testen Sie die Verbindung, und erstellen Sie den neuen verknüpften Dienst.

    Screenshot of linked service configuration for an FTP server.

Details zur Connector-Konfiguration

Die folgenden Abschnitte enthalten Details zu den Eigenschaften, die zum Definieren von Entitäten speziell für SFTP verwendet werden.

Eigenschaften des verknüpften Diensts

Folgende Eigenschaften werden für den mit FTP verknüpften Dienst unterstützt:

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft muss auf Folgendes festgelegt werden: FtpServer. Ja
host Gibt den Namen oder die IP-Adresse des FTP-Servers an. Ja
port Gibt den Port, den der FTP-Server abhört, an.
Zulässige Werte sind ganze Zahlen (Standardwert 21).
Nein
enableSsl Gibt an, ob FTP über einen SSL/TLS-Kanal verwendet werden soll.
Zulässige Werte sind true (Standard) oder false
Nein
enableServerCertificateValidation Gibt an, ob die Überprüfung des TLS/SSL-Serverzertifikats aktiviert werden soll, wenn Sie FTP über den SSL/TLS-Kanal verwenden.
Zulässige Werte sind true (Standard) oder false
Nein
authenticationType Gibt den Authentifizierungstyp an.
Zulässige Werte sind: Standard, Anonym
Ja
userName Gibt den Benutzer an, der Zugriff auf den FTP-Server hat. Nein
password Gibt das Kennwort für den Benutzer (userName) an. Markieren Sie dieses Feld als einen „SecureString“, um es sicher zu speichern, oder verweisen Sie auf ein in Azure Key Vault gespeichertes Geheimnis. Nein
connectVia Die Integrationslaufzeit, die zum Herstellen einer Verbindung mit dem Datenspeicher verwendet werden muss. Weitere Informationen finden Sie im Abschnitt Voraussetzungen. Wenn keine Option angegeben ist, wird die standardmäßige Azure Integration Runtime verwendet. Nein

Hinweis

Der FTP-Connector unterstützt den Zugriff auf FTP-Server ohne Verschlüsselung oder mit expliziter SSL/TLS-Verschlüsselung. Er unterstützt keine implizite SSL/TLS-Verschlüsselung.

Beispiel 1: Verwenden der anonymen Authentifizierung

{
    "name": "FTPLinkedService",
    "properties": {
        "type": "FtpServer",
        "typeProperties": {
            "host": "<ftp server>",
            "port": 21,
            "enableSsl": true,
            "enableServerCertificateValidation": true,
            "authenticationType": "Anonymous"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Beispiel 2: Verwenden der Standardauthentifizierung

{
    "name": "FTPLinkedService",
    "properties": {
        "type": "FtpServer",
        "typeProperties": {
            "host": "<ftp server>",
            "port": 21,
            "enableSsl": true,
            "enableServerCertificateValidation": true,
            "authenticationType": "Basic",
            "userName": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Dataset-Eigenschaften

Eine vollständige Liste mit den Abschnitten und Eigenschaften, die zum Definieren von Datasets zur Verfügung stehen, finden Sie im Artikel zu Datasets.

Azure Data Factory unterstützt die folgenden Dateiformate. Informationen zu formatbasierten Einstellungen finden Sie in den jeweiligen Artikeln.

Folgende Eigenschaften werden für FTP unter den location-Einstellungen in formatbasierten Datasets unterstützt:

Eigenschaft Beschreibung Erforderlich
type Die „type“-Eigenschaft unter location im Dataset muss auf FtpServerLocation festgelegt werden. Ja
folderPath Der Pfad zum Ordner. Wenn Sie Platzhalter verwenden möchten, um Ordner zu filtern, überspringen Sie diese Einstellung, und geben Sie entsprechende Aktivitätsquelleneinstellungen an. Nein
fileName Der Name der Datei unter dem angegebenen „folderPath“. Wenn Sie Platzhalter verwenden möchten, um Ordner zu filtern, überspringen Sie diese Einstellung, und geben Sie entsprechenden Aktivitätsquelleneinstellungen an. Nein

Beispiel:

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

Eigenschaften der Kopieraktivität

Eine vollständige Liste mit den Abschnitten und Eigenschaften zum Definieren von Aktivitäten finden Sie im Artikel Pipelines. Dieser Abschnitt enthält eine Liste der Eigenschaften, die von der FTP-Quelle unterstützt werden.

FTP als Quelle

Azure Data Factory unterstützt die folgenden Dateiformate. Informationen zu formatbasierten Einstellungen finden Sie in den jeweiligen Artikeln.

Folgende Eigenschaften werden für FTP unter den storeSettings-Einstellungen in der formatbasierten Kopierquelle unterstützt:

Eigenschaft Beschreibung Erforderlich
type Die „type“-Eigenschaft unter storeSettings muss auf FtpReadSettings festgelegt werden. Ja
Suchen Sie die zu kopierenden Dateien:
OPTION 1: statischer Pfad
Kopieren Sie aus dem im Dataset angegebenen Ordner/Dateipfad. Wenn Sie alle Dateien aus einem Ordner kopieren möchten, geben Sie zusätzlich für wildcardFileName den Wert * an.
OPTION 2: Platzhalter
– wildcardFolderPath
Der Ordnerpfad mit Platzhalterzeichen, um Quellordner zu filtern.
Zulässige Platzhalter sind: * (entspricht null oder mehr Zeichen) und ? (entspricht null oder einem einzelnen Zeichen). Verwenden Sie ^ als Escapezeichen, wenn Ihr tatsächlicher Dateiname einen Platzhalter oder dieses Escapezeichen enthält.
Weitere Beispiele finden Sie unter Beispiele für Ordner- und Dateifilter.
Nein
OPTION 2: Platzhalter
– wildcardFileName
Der Dateiname mit Platzhalterzeichen unter dem angegebenen „folderPath/wildcardFolderPath“ für das Filtern von Quelldateien.
Zulässige Platzhalter sind: * (entspricht null oder mehr Zeichen) und ? (entspricht null oder einem einzelnen Zeichen). Verwenden Sie ^ als Escapezeichen, wenn Ihr tatsächlicher Dateiname einen Platzhalter oder dieses Escapezeichen enthält. Weitere Beispiele finden Sie unter Beispiele für Ordner- und Dateifilter.
Ja
OPTION 3: eine Liste von Dateien
– fileListPath
Gibt an, dass eine bestimmte Dateigruppe kopiert werden soll. Verweisen Sie auf eine Textdatei, die eine Liste der zu kopierenden Dateien enthält, und zwar eine Datei pro Zeile. Dies ist der relative Pfad zu dem im Dataset konfigurierten Pfad.
Wenn Sie diese Option verwenden, dürfen Sie keinen Dateinamen im Dataset angeben. Weitere Beispiele finden Sie unter Beispiele für Dateilisten.
Nein
Zusätzliche Einstellungen:
recursive Gibt an, ob die Daten rekursiv aus den Unterordnern oder nur aus dem angegebenen Ordner gelesen werden. Beachten Sie Folgendes: Wenn „recursive“ auf „true“ festgelegt ist und es sich bei der Senke um einen dateibasierten Speicher handelt, wird ein leerer Ordner oder Unterordner nicht in die Senke kopiert und dort auch nicht erstellt.
Zulässige Werte sind true (Standard) und false.
Diese Eigenschaft gilt nicht, wenn Sie fileListPath konfigurieren.
Nein
deleteFilesAfterCompletion Gibt an, ob die Binärdateien nach dem erfolgreichen Verschieben in den Zielspeicher aus dem Quellspeicher gelöscht werden. Die Dateien werden einzeln gelöscht, sodass Sie bei einem Fehler der Kopieraktivität feststellen werden, dass einige Dateien bereits ins Ziel kopiert und aus der Quelle gelöscht wurden, wohingegen sich andere weiter im Quellspeicher befinden.
Diese Eigenschaft ist nur im Szenario zum Kopieren von Binärdateien gültig. Standardwert: FALSE.
Nein
useBinaryTransfer Gibt an, ob der binäre Übertragungsmodus verwendet werden soll. Für den Binärmodus (Standardwert) lautet der Wert „true“, und für ASCII lautet er „false“. Nein
enablePartitionDiscovery Geben Sie bei partitionierten Dateien an, ob die Partitionen anhand des Dateipfads analysiert und als zusätzliche Quellspalten hinzugefügt werden sollen.
Zulässige Werte sind false (Standard) und true.
Nein
partitionRootPath Wenn die Partitionsermittlung aktiviert ist, geben Sie den absoluten Stammpfad an, um partitionierte Ordner als Datenspalten zu lesen.

Ohne Angabe gilt standardmäßig Folgendes:
- Wenn Sie den Dateipfad im Dataset oder die Liste der Dateien in der Quelle verwenden, ist der Partitionsstammpfad der im Dataset konfigurierte Pfad.
Wenn Sie einen Platzhalterordnerfilter verwenden, ist der Stammpfad der Partition der Unterpfad vor dem ersten Platzhalter.

Angenommen, Sie konfigurieren den Pfad im Dataset als „root/folder/year=2020/month=08/day=27“:
- Wenn Sie den Stammpfad der Partition als „root/folder/year=2020“ angeben, generiert die Kopieraktivität zusätzlich zu den Spalten in den Dateien die beiden weiteren Spalten month und day mit den Werten „08“ bzw. „27“.
- Wenn kein Stammpfad für die Partition angegeben ist, wird keine zusätzliche Spalte generiert.
Nein
maxConcurrentConnections Die Obergrenze gleichzeitiger Verbindungen mit dem Datenspeicher während der Aktivitätsausführung. Geben Sie diesen Wert nur an, wenn Sie die Anzahl der gleichzeitigen Verbindungen begrenzen möchten. Nein
disableChunking Beim Kopieren von Daten vom FTP-Server versucht der Dienst, zuerst die Dateilänge abzurufen, dann die Datei in mehrere Teile aufzuteilen und diese parallel zu lesen. Geben Sie an, ob der FTP-Server das Abrufen der Dateilänge oder das Lesen aus einem bestimmten Offset unterstützt.
Zulässige Werte sind false (Standard) und true.
Nein

Beispiel:

"activities":[
    {
        "name": "CopyFromFTP",
        "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": "FtpReadSettings",
                    "recursive": true,
                    "wildcardFolderPath": "myfolder*A",
                    "wildcardFileName": "*.csv",
                    "disableChunking": false
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Beispiele für Ordner- und Dateifilter

Dieser Abschnitt beschreibt das sich ergebende Verhalten für den Ordnerpfad und den Dateinamen mit Platzhalterfiltern.

folderPath fileName recursive Quellordnerstruktur und Filterergebnis (Dateien mit Fettformatierung werden abgerufen.)
Folder* (empty, use default) false FolderA
    Datei1.csv
    File2.json
    Unterordner1
        File3.csv
        File4.json
        File5.csv
AndererOrdnerB
    Datei6.csv
Folder* (empty, use default) true FolderA
    Datei1.csv
    File2.json
    Unterordner1
        File3.csv
        File4.json
        File5.csv
AndererOrdnerB
    Datei6.csv
Folder* *.csv false FolderA
    Datei1.csv
    Datei2.json
    Unterordner1
        File3.csv
        File4.json
        File5.csv
AndererOrdnerB
    Datei6.csv
Folder* *.csv true FolderA
    Datei1.csv
    Datei2.json
    Unterordner1
        File3.csv
        File4.json
        File5.csv
AndererOrdnerB
    Datei6.csv

Beispiele für Dateilisten

In diesem Abschnitt wird das resultierende Verhalten beschrieben, wenn der Dateilistenpfad in der Quelle der Kopieraktivität verwendet wird.

Angenommen, Sie haben die folgende Quellordnerstruktur und möchten die Dateien kopieren, deren Namen fett formatiert sind:

Beispielquellstruktur Inhalt in „FileListToCopy.txt“ Konfiguration
root
    FolderA
        Datei1.csv
        Datei2.json
        Unterordner1
            File3.csv
            File4.json
            File5.csv
    Metadaten
        FileListToCopy.txt
Datei1.csv
Unterordner1/Datei3.csv
Unterordner1/Datei5.csv
Im Dataset:
– Ordnerpfad: root/FolderA

In der Quelle der Kopieraktivität:
– Dateilistenpfad: root/Metadata/FileListToCopy.txt

Der Dateilistenpfad verweist auf eine Textdatei im selben Datenspeicher, der eine Liste der zu kopierenden Dateien enthält, und zwar eine Datei pro Zeile. Diese enthält den relativen Pfad zu dem im Dataset konfigurierten Pfad.

Eigenschaften der Lookup-Aktivität

Ausführliche Informationen zu den Eigenschaften finden Sie unter Lookup-Aktivität.

Eigenschaften der GetMetadata-Aktivität

Ausführliche Informationen zu den Eigenschaften finden Sie unter GetMetadata-Aktivität.

Eigenschaften der Delete-Aktivität

Ausführliche Informationen zu den Eigenschaften finden Sie unter Delete-Aktivität.

Legacy-Modelle

Hinweis

Die folgenden Modelle werden aus Gründen der Abwärtskompatibilität weiterhin unverändert unterstützt. Es wird jedoch empfohlen, in Zukunft das in den obigen Abschnitten erwähnte neue Modell zu verwenden, da das neue Modell nun von der Benutzeroberfläche für die Dokumenterstellung generiert wird.

Legacy-Datasetmodell

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft des Datasets muss auf folgenden Wert festgelegt werden: FileShare Ja
folderPath Pfad zum Ordner. Platzhalterfilter werden unterstützt. Zulässige Platzhalter sind: * (entspricht null oder mehr Zeichen) und ? (entspricht null oder einem einzelnen Zeichen). Verwenden Sie ^ als Escapezeichen, wenn Ihr tatsächlicher Ordnername einen Platzhalter oder dieses Escapezeichen enthält.

Beispiele: Stammordner/Unterordner/. Weitere Beispiele finden Sie unter Beispiele für Ordner- und Dateifilter.
Ja
fileName Name oder Platzhalterfilter für die Dateien unter dem angegebenen Wert für „folderPath“. Wenn Sie für diese Eigenschaft keinen Wert angeben, verweist das Dataset auf alle Dateien im Ordner.

Für Filter sind folgende Platzhalter zulässig: * (entspricht null [0] oder mehr Zeichen) und ? (entspricht null [0] oder einem einzelnen Zeichen).
- Beispiel 1: "fileName": "*.csv"
- Beispiel 2: "fileName": "???20180427.txt"
Verwenden Sie ^ als Escapezeichen, wenn der tatsächliche Dateiname einen Platzhalter oder dieses Escapezeichen enthält.
Nein
format Wenn Sie Dateien unverändert zwischen dateibasierten Speichern kopieren möchten (binäre Kopie), können Sie den Formatabschnitt bei den Definitionen von Eingabe- und Ausgabedatasets überspringen.

Für das Analysieren von Dateien mit einem bestimmten Format werden die folgenden Dateiformattypen unterstützt: TextFormat, JsonFormat, AvroFormat, OrcFormat und ParquetFormat. Sie müssen die type -Eigenschaft unter „format“ auf einen dieser Werte festlegen. Weitere Informationen finden Sie in den Abschnitten Textformat, JSON-Format, Avro-Format, Orc-Format und Parquet-Format.
Nein (nur für Szenarien mit Binärkopien)
compression Geben Sie den Typ und den Grad der Komprimierung für die Daten an. Weitere Informationen finden Sie unter Unterstützte Dateiformate und Codecs für die Komprimierung.
Folgende Typen werden unterstützt: GZip, Deflate, BZip2 und ZipDeflate.
Folgende Ebenen werden unterstützt: Optimal und Fastest.
Nein
useBinaryTransfer Gibt an, ob der binäre Übertragungsmodus verwendet werden soll. Für den Binärmodus (Standardwert) lautet der Wert „true“, und für ASCII lautet er „false“. Nein

Tipp

Wenn Sie alle Dateien eines Ordners kopieren möchten, geben Sie nur folderPath an.
Wenn Sie eine einzelne Datei mit einem bestimmten Namen kopieren möchten, geben Sie folderPath mit dem Ordner und fileName mit dem Dateinamen an.
Wenn Sie eine Teilmenge der Dateien eines Ordners kopieren möchten, geben Sie folderPath mit dem Ordner und fileName mit dem Platzhalterfilter an.

Hinweis

Wenn Sie die Eigenschaft „fileFilter“ für den Dateifilter verwendet haben, wird sie weiterhin unverändert unterstützt. Es wird aber empfohlen, ab sofort die Filterfunktion zu verwenden, die „fileName“ neu hinzugefügt wurde.

Beispiel:

{
    "name": "FTPDataset",
    "properties": {
        "type": "FileShare",
        "linkedServiceName":{
            "referenceName": "<FTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "folderPath": "folder/subfolder/",
            "fileName": "myfile.csv.gz",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ",",
                "rowDelimiter": "\n"
            },
            "compression": {
                "type": "GZip",
                "level": "Optimal"
            }
        }
    }
}

Legacy-Kopieraktivität: Quellenmodell

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft der Quelle der Kopieraktivität muss auf Folgendes festgelegt werden: FileSystemSource Ja
recursive Gibt an, ob die Daten rekursiv aus den Unterordnern oder nur aus dem angegebenen Ordner gelesen werden. Beachten Sie Folgendes: Wenn „recursive“ auf TRUE festgelegt und die Senke ein dateibasierter Speicher ist, wird ein leerer Ordner/Unterordner nicht in die Senke kopiert bzw. nicht in ihr erstellt.
Zulässige Werte sind true (Standard) oder false.
Nein
maxConcurrentConnections Die Obergrenze gleichzeitiger Verbindungen mit dem Datenspeicher während der Aktivitätsausführung. Geben Sie diesen Wert nur an, wenn Sie die Anzahl der gleichzeitigen Verbindungen begrenzen möchten. Nein

Beispiel:

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

Eine Liste der Datenspeicher, die als Quelles und Senken für die Kopieraktivität unterstützt werden, finden Sie in der Dokumentation für Unterstützte Datenspeicher.