Copier des données vers et à partir d’un système de fichiers local à l’aide d’Azure Data FactoryCopy data to and from an on-premises file system by using Azure Data Factory

Notes

Cet article s’applique à la version 1 de Data Factory.This article applies to version 1 of Data Factory. Si vous utilisez la version actuelle du service Data Factory, consultez Connecteur Système de fichiers dans V2.If you are using the current version of the Data Factory service, see File System connector in V2.

Cet article explique comment utiliser l’activité de copie dans Azure Data Factory pour déplacer des données vers et à partir d’un système de fichiers local.This article explains how to use the Copy Activity in Azure Data Factory to copy data to/from an on-premises file system. Il s’appuie sur l’article Activités de déplacement des données, qui présente une vue d’ensemble du déplacement de données avec l’activité de copie.It builds on the Data Movement Activities article, which presents a general overview of data movement with the copy activity.

Notes

Cet article a été mis à jour pour tenir compte de l’utilisation du nouveau module Az d’Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Vous pouvez toujours utiliser le module AzureRM, qui continue à recevoir des correctifs de bogues jusqu’à au moins décembre 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Pour en savoir plus sur le nouveau module Az et la compatibilité avec AzureRM, consultez Présentation du nouveau module Az d’Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Pour des instructions d’installation du module Az, consultez Installer Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Scénarios pris en chargeSupported scenarios

Vous pouvez copier des données d’un système de fichiers local vers les magasins de données suivants :You can copy data from an on-premises file system to the following data stores:

CatégorieCategory Banque de donnéesData store
AzureAzure stockage d’objets blob AzureAzure Blob storage
Azure Data Lake Storage Gen1Azure Data Lake Storage Gen1
Azure Cosmos DB (API SQL)Azure Cosmos DB (SQL API)
Azure SQL DatabaseAzure SQL Database
Azure SQL Data WarehouseAzure SQL Data Warehouse
Index Recherche AzureAzure Search Index
Stockage Table AzureAzure Table storage
Bases de donnéesDatabases SQL ServerSQL Server
OracleOracle
FichierFile Système de fichiersFile system

Vous pouvez copier des données des magasins de données suivants vers un système de fichiers local :You can copy data from the following data stores to an on-premises file system:

CatégorieCategory Banque de donnéesData store
AzureAzure stockage d’objets blob AzureAzure Blob storage
Azure Cosmos DB (API SQL)Azure Cosmos DB (SQL API)
Azure Data Lake Storage Gen1Azure Data Lake Storage Gen1
Azure SQL DatabaseAzure SQL Database
Azure SQL Data WarehouseAzure SQL Data Warehouse
Stockage Table AzureAzure Table storage
Bases de donnéesDatabases Amazon RedshiftAmazon Redshift
DB2DB2
MySQLMySQL
OracleOracle
PostgreSQLPostgreSQL
SAP Business WarehouseSAP Business Warehouse
SAP HANASAP HANA
SQL ServerSQL Server
SybaseSybase
TeradataTeradata
NosqlNoSQL CassandraCassandra
MongoDBMongoDB
FichierFile Amazon S3Amazon S3
Système de fichiersFile system
FTPFTP
HDFSHDFS
SFTPSFTP
AutresOthers HTTP génériqueGeneric HTTP
OData génériqueGeneric OData
ODBC génériqueGeneric ODBC
SalesforceSalesforce
Table web (table HTML)Web table (table from HTML)

Notes

L’activité de copie ne supprime pas le fichier source une fois qu’il est copié sur la destination.Copy Activity does not delete the source file after it is successfully copied to the destination. Si vous devez supprimer le fichier source une fois qu’il est copié, créez une activité personnalisée pour supprimer le fichier et utilisez l’activité dans le pipeline.If you need to delete the source file after a successful copy, create a custom activity to delete the file and use the activity in the pipeline.

Activation de la connectivitéEnabling connectivity

Data Factory prend en charge la connexion vers et depuis un système de fichiers local via la passerelle de gestion des données.Data Factory supports connecting to and from an on-premises file system via Data Management Gateway. Vous devez installer la passerelle de gestion des données dans votre environnement local pour que le service Data Factory se connecte à tout magasin de données local pris en charge comprenant le système de fichiers.You must install the Data Management Gateway in your on-premises environment for the Data Factory service to connect to any supported on-premises data store including file system. Consultez l’article Déplacement de données entre des sources locales et le cloud à l’aide de la passerelle de gestion des données pour en savoir plus sur la passerelle de gestion des données et obtenir des instructions détaillées sur la configuration de la passerelle.To learn about Data Management Gateway and for step-by-step instructions on setting up the gateway, see Move data between on-premises sources and the cloud with Data Management Gateway. En dehors de la passerelle de gestion des données, aucun autre fichier binaire n’a besoin d’être installé pour communiquer vers et depuis un système de fichiers local.Apart from Data Management Gateway, no other binary files need to be installed to communicate to and from an on-premises file system. Vous devez installer et utiliser la passerelle de gestion des données même si le système de fichiers se trouve dans la machine virtuelle Azure IaaS.You must install and use the Data Management Gateway even if the file system is in Azure IaaS VM. Pour obtenir des informations détaillées sur la passerelle, consultez Passerelle de gestion des données.For detailed information about the gateway, see Data Management Gateway.

Pour utiliser un partage de fichiers Linux, installez Samba sur votre serveur Linux, puis la passerelle de gestion des données sur un serveur Windows.To use a Linux file share, install Samba on your Linux server, and install Data Management Gateway on a Windows server. L’installation de la passerelle de gestion des données sur un serveur Linux n'est pas prise en charge.Installing Data Management Gateway on a Linux server is not supported.

Prise en mainGetting started

Vous pouvez créer un pipeline avec une activité de copie qui déplace les données vers/depuis un système de fichiers à l’aide de différents outils/API.You can create a pipeline with a copy activity that moves data to/from a file system by using different tools/APIs.

Le moyen le plus simple de créer un pipeline consiste à utiliser l’Assistant Copie.The easiest way to create a pipeline is to use the Copy Wizard. Consultez le tutoriel : Créer un pipeline avec l’activité de copie à l’aide de l’Assistant Copie pour obtenir une procédure pas à pas rapide sur la création d’un pipeline à l’aide de l’Assistant Copie de données.See Tutorial: Create a pipeline using Copy Wizard for a quick walkthrough on creating a pipeline using the Copy data wizard.

Vous pouvez également utiliser les outils suivants pour créer un pipeline : Visual Studio, Azure PowerShell, modèle Azure Resource Manager, .NET API et REST API.You can also use the following tools to create a pipeline: Visual Studio, Azure PowerShell, Azure Resource Manager template, .NET API, and REST API. Pour obtenir des instructions détaillées sur la création d’un pipeline avec une activité de copie, consultez le didacticiel sur l’activité de copie.See Copy activity tutorial for step-by-step instructions to create a pipeline with a copy activity.

Que vous utilisiez des outils ou des API, la création d’un pipeline qui déplace les données d’un magasin de données source vers un magasin de données récepteur implique les étapes suivantes :Whether you use the tools or APIs, you perform the following steps to create a pipeline that moves data from a source data store to a sink data store:

  1. Création d'une fabrique de données.Create a data factory. Une fabrique de données peut contenir un ou plusieurs pipelines.A data factory may contain one or more pipelines.
  2. Création de services liés pour lier les magasins de données d’entrée et de sortie à votre fabrique de données.Create linked services to link input and output data stores to your data factory. Par exemple, si vous copiez des données d’un Stockage Blob Azure vers un système de fichiers local, vous créez deux services liés pour lier votre système de fichiers local et votre compte de stockage Azure à votre fabrique de données.For example, if you are copying data from an Azure blob storage to an on-premises file system, you create two linked services to link your on-premises file system and Azure storage account to your data factory. Pour connaître les propriétés des services liés propres à un système de fichiers local, consultez la section Propriétés des services liés.For linked service properties that are specific to an on-premises file system, see linked service properties section.
  3. Création de jeux de données pour représenter les données d’entrée et de sortie de l’opération de copie.Create datasets to represent input and output data for the copy operation. Dans l’exemple mentionné à la dernière étape, vous créez un jeu de données pour spécifier le conteneur d’objets Blob et le dossier qui contient les données d’entrée.In the example mentioned in the last step, you create a dataset to specify the blob container and folder that contains the input data. Vous créez également un autre jeu de données pour spécifier le nom de dossier et de fichier (facultatif) dans votre système de fichiers.And, you create another dataset to specify the folder and file name (optional) in your file system. Pour connaître les propriétés des jeux de données propres à un système de fichiers local, consultez la section Propriétés des jeux de données.For dataset properties that are specific to on-premises file system, see dataset properties section.
  4. Création d’un pipeline avec une activité de copie qui utilise un jeu de données en tant qu’entrée et un jeu de données en tant que sortie.Create a pipeline with a copy activity that takes a dataset as an input and a dataset as an output. Dans l’exemple mentionné plus haut, vous utilisez BlobSource comme source et FileSystemSink comme récepteur de l’activité de copie.In the example mentioned earlier, you use BlobSource as a source and FileSystemSink as a sink for the copy activity. De même, si vous copiez d’un système de fichiers local vers le Stockage Blob Azure, vous utilisez FileSystemSource et BlobSink dans l’activité de copie.Similarly, if you are copying from on-premises file system to Azure Blob Storage, you use FileSystemSource and BlobSink in the copy activity. Pour connaître les propriétés de l’activité de copie propres à un système de fichiers local, consultez la section Propriétés de l’activité de copie.For copy activity properties that are specific to on-premises file system, see copy activity properties section. Pour plus d’informations sur l’utilisation d’un magasin de données comme source ou comme récepteur, cliquez sur le lien de la section précédente de votre magasin de données.For details on how to use a data store as a source or a sink, click the link in the previous section for your data store.

Lorsque vous utilisez l’Assistant, les définitions JSON de ces entités Data Factory (services liés, jeux de données et pipeline) sont automatiquement créées pour vous.When you use the wizard, JSON definitions for these Data Factory entities (linked services, datasets, and the pipeline) are automatically created for you. Lorsque vous utilisez des outils/API (à l’exception de l’API .NET), vous devez définir ces entités Data Factory au format JSON.When you use tools/APIs (except .NET API), you define these Data Factory entities by using the JSON format. Pour obtenir des exemples comportant des définitions JSON d’entités Data Factory utilisées pour copier les données vers ou à partir d’un système de fichiers, consultez la section Exemples JSON de cet article.For samples with JSON definitions for Data Factory entities that are used to copy data to/from a file system, see JSON examples section of this article.

Les sections suivantes fournissent des informations détaillées sur les propriétés JSON utilisées pour définir les entités Data Factory propres au système de fichiers :The following sections provide details about JSON properties that are used to define Data Factory entities specific to file system:

Propriétés du service liéLinked service properties

Vous pouvez lier un système de fichiers local à une fabrique de données Azure avec le service lié Serveur de fichiers local.You can link an on-premises file system to an Azure data factory with the On-Premises File Server linked service. Le tableau suivant décrit les éléments JSON spécifiques au service lié Serveur de fichiers local.The following table provides descriptions for JSON elements that are specific to the On-Premises File Server linked service.

PropriétéProperty DescriptionDescription ObligatoireRequired
Typetype Vérifiez que la propriété type est définie sur OnPremisesFileServer.Ensure that the type property is set to OnPremisesFileServer. OUIYes
hosthost Spécifie le chemin d’accès racine du dossier que vous souhaitez copier.Specifies the root path of the folder that you want to copy. Utilisez le caractère d’échappement « \ » pour les caractères spéciaux contenus dans la chaîne.Use the escape character ‘ \ ’ for special characters in the string. Consultez la section Exemples de définitions de jeux de données et de service liés pour obtenir des exemples.See Sample linked service and dataset definitions for examples. OUIYes
userIduserid Spécifiez l’ID de l’utilisateur qui a accès au serveur.Specify the ID of the user who has access to the server. Non (si vous choisissez encryptedcredential)No (if you choose encryptedCredential)
passwordpassword Spécifiez le mot de passe de l’utilisateur (userid).Specify the password for the user (userid). Non (si vous choisissez encryptedcredential)No (if you choose encryptedCredential
encryptedCredentialencryptedCredential Spécifiez les informations d’identification chiffrées que vous pouvez obtenir en exécutant la cmdlet New-AzDataFactoryEncryptValue.Specify the encrypted credentials that you can get by running the New-AzDataFactoryEncryptValue cmdlet. Non (si vous choisissez de spécifier un nom d'utilisateur et un mot de passe en texte brut)No (if you choose to specify userid and password in plain text)
gatewayNamegatewayName Spécifie le nom de la passerelle que Data Factory doit utiliser pour se connecter au serveur de fichiers local.Specifies the name of the gateway that Data Factory should use to connect to the on-premises file server. OUIYes

Exemples de définitions de jeux de données et de service liésSample linked service and dataset definitions

ScénarioScenario Hôte dans la définition du service liéHost in linked service definition folderPath dans la définition du jeu de donnéesfolderPath in dataset definition
Dossier local sur l’ordinateur passerelle de gestion des données :Local folder on Data Management Gateway machine:

Exemples : D:\* ou D:\dossier\sous-dossier\Examples: D:\* or D:\folder\subfolder\
D:\\ (pour la passerelle de gestion des données 2.0 et versions ultérieures)D:\\ (for Data Management Gateway 2.0 and later versions)

hôte local (pour les versions de la passerelle de gestion des données antérieures à 2.0)localhost (for earlier versions than Data Management Gateway 2.0)
.\\ ou dossier\\sous-dossier (pour la passerelle de gestion des données 2.0 et versions ultérieures).\\ or folder\\subfolder (for Data Management Gateway 2.0 and later versions)

D:\\ ou D:\\dossier\\sous-dossier (pour les versions de la passerelle antérieures à 2.0)D:\\ or D:\\folder\\subfolder (for gateway version below 2.0)
Dossier partagé distant :Remote shared folder:

Exemples : \\myserver\share\* ou \\myserver\share\dossier\sous-dossier\Examples: \\myserver\share\* or \\myserver\share\folder\subfolder\
\\\\myserver\\share\\\\myserver\\share .\\ ou dossier\\sous-dossier.\\ or folder\\subfolder

Notes

Lors d’une création via l’interface utilisateur, vous n’avez pas besoin d’entrer la double barre oblique inverse (\\) pour générer une séquence d’échappement comme vous le faites via JSON. Spécifiez simplement une barre oblique inverse unique.When authoring via UI, you don't need to input double backslash (\\) to escape like you do via JSON, specify single backslash.

Exemple : utilisation d’un nom d’utilisateur et d’un mot de passe en texte brutExample: Using username and password in plain text

{
  "Name": "OnPremisesFileServerLinkedService",
  "properties": {
    "type": "OnPremisesFileServer",
    "typeProperties": {
      "host": "\\\\Contosogame-Asia",
      "userid": "Admin",
      "password": "123456",
      "gatewayName": "mygateway"
    }
  }
}

Exemple : Utilisation d’encryptedcredentialExample: Using encryptedcredential

{
  "Name": " OnPremisesFileServerLinkedService ",
  "properties": {
    "type": "OnPremisesFileServer",
    "typeProperties": {
      "host": "D:\\",
      "encryptedCredential": "WFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5xxxxxxxxxxxxxxxxx",
      "gatewayName": "mygateway"
    }
  }
}

Propriétés du jeu de donnéesDataset properties

Pour obtenir une liste complète des sections et propriétés disponibles pour la définition de jeux de données, consultez l’article Création de jeux de données.For a full list of sections and properties that are available for defining datasets, see Creating datasets. Les sections comme la structure, la disponibilité et la stratégie d'un jeu de données JSON sont similaires pour tous les types de jeux de données.Sections such as structure, availability, and policy of a dataset JSON are similar for all dataset types.

La section typeProperties est différente pour chaque type de jeu de données.The typeProperties section is different for each type of dataset. Elle fournit des informations telles que l’emplacement et le format des données dans la banque de données.It provides information such as the location and format of the data in the data store. La section typeProperties pour le jeu de données de type FileShare a les propriétés suivantes :The typeProperties section for the dataset of type FileShare has the following properties:

PropriétéProperty DescriptionDescription ObligatoireRequired
folderPathfolderPath Spécifie le sous-chemin vers le dossier.Specifies the subpath to the folder. Utilisez le caractère d’échappement « ' » pour les caractères spéciaux contenus dans la chaîne.Use the escape character '' for special characters in the string. Le filtre de caractères génériques n'est pas pris en charge.Wildcard filter is not supported. Consultez la section Exemples de définitions de jeux de données et de service liés pour obtenir des exemples.See Sample linked service and dataset definitions for examples.

Vous pouvez également effectuer une combinaison avec la propriété partitionBy pour que les chemins d’accès de dossier soient basés sur les dates et heures de démarrage et d’arrêt de la tranche.You can combine this property with partitionBy to have folder paths based on slice start/end date-times.
OUIYes
fileNamefileName Spécifiez le nom du fichier dans l’élément folderPath si vous souhaitez que la table se réfère à un fichier spécifique du dossier.Specify the name of the file in the folderPath if you want the table to refer to a specific file in the folder. Si vous ne spécifiez aucune valeur pour cette propriété, le tableau pointe vers tous les fichiers du dossier.If you do not specify any value for this property, the table points to all files in the folder.

Lorsque fileName n'est pas spécifié pour un jeu de données de sortie et que preserveHierarchy n’est pas spécifié dans le récepteur d’activité, le nom du fichier généré est au format suivant :When fileName is not specified for an output dataset and preserveHierarchy is not specified in activity sink, the name of the generated file is in the following format:

Data.<Guid>.txt (Exemple : Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txt)Data.<Guid>.txt (Example: Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txt)
NonNo
fileFilterfileFilter Spécifiez un filtre à utiliser pour sélectionner un sous-ensemble de fichiers dans le folderPath plutôt que tous les fichiers.Specify a filter to be used to select a subset of files in the folderPath rather than all files.

Les valeurs autorisées sont : * (plusieurs caractères) et ? (caractère unique).Allowed values are: * (multiple characters) and ? (single character).

Exemple 1 : « fileFilter » : « *.log »Example 1: "fileFilter": "*.log"
Exemple 2 : « fileFilter » : 2014-1-?.txt »Example 2: "fileFilter": 2014-1-?.txt"

Remarque : fileFilter s’applique à un jeu de données FileShare d’entrée.Note that fileFilter is applicable for an input FileShare dataset.
NonNo
partitionedBypartitionedBy partitionedBy peut être utilisé pour spécifier un folderPath/fileName dynamique pour les données de série chronologique.You can use partitionedBy to specify a dynamic folderPath/fileName for time-series data. Par exemple, folderPath peut être paramétré pour toutes les heures de données.An example is folderPath parameterized for every hour of data. NonNo
formatformat Les types de formats suivants sont pris en charge : TextFormat, JsonFormat, AvroFormat, OrcFormat et ParquetFormat.The following format types are supported: TextFormat, JsonFormat, AvroFormat, OrcFormat, ParquetFormat. Définissez la propriété type située sous Format sur l’une de ces valeurs.Set the type property under format to one of these values. Pour en savoir plus, consultez les sections relatives à format Text, format Json, format Avro, format Orc et format Parquet.For more information, see Text Format, Json Format, Avro Format, Orc Format, and Parquet Format sections.

Si vous souhaitez copier des fichiers en l’état entre des magasins de fichiers (copie binaire), ignorez la section Format dans les deux définitions de jeu de données d’entrée et de sortie.If you want to copy files as-is between file-based stores (binary copy), skip the format section in both input and output dataset definitions.
NonNo
compressioncompression Spécifiez le type et le niveau de compression pour les données.Specify the type and level of compression for the data. Types pris en charge : GZip, Deflate, BZip2 et ZipDeflate.Supported types are: GZip, Deflate, BZip2, and ZipDeflate. Niveaux pris en charge : Optimal et Fastest.Supported levels are: Optimal and Fastest. consultez Formats de fichiers et de compression pris en charge dans Azure Data Factory.see File and compression formats in Azure Data Factory. NonNo

Notes

Vous ne pouvez pas utiliser fileName et fileFilter simultanément.You cannot use fileName and fileFilter simultaneously.

Utilisation de la propriété partitionedByUsing partitionedBy property

Comme mentionné dans la section précédente, vous pouvez spécifier un folderPath et un fileName dynamiques pour les données de série chronologique avec la propriété partitionedBy, les fonctions Data Factory et les variables système.As mentioned in the previous section, you can specify a dynamic folderPath and filename for time series data with the partitionedBy property, Data Factory functions, and the system variables.

Consultez les articles Création de jeux de données, Planification et exécution et Création de pipelines pour mieux comprendre les jeux de données de série chronologique, la planification et les segments.To understand more details on time-series datasets, scheduling, and slices, see Creating datasets, Scheduling and execution, and Creating pipelines.

Exemple 1 :Sample 1:

"folderPath": "wikidatagateway/wikisampledataout/{Slice}",
"partitionedBy":
[
    { "name": "Slice", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyyMMddHH" } },
],

Dans cet exemple, {Slice} est remplacé par la valeur de la variable système Data Factory SliceStart au format (AAAAMMJJHH).In this example, {Slice} is replaced with the value of the Data Factory system variable SliceStart in the format (YYYYMMDDHH). SliceStart fait référence à l’heure de début de la tranche.SliceStart refers to start time of the slice. folderPath est différent pour chaque segment.The folderPath is different for each slice. Par exemple : wikidatagateway/wikisampledataout/2014100103 ou wikidatagateway/wikisampledataout/2014100104.For example: wikidatagateway/wikisampledataout/2014100103 or wikidatagateway/wikisampledataout/2014100104.

Exemple 2 :Sample 2:

"folderPath": "wikidatagateway/wikisampledataout/{Year}/{Month}/{Day}",
"fileName": "{Hour}.csv",
"partitionedBy":
[
    { "name": "Year", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyy" } },
    { "name": "Month", "value": { "type": "DateTime", "date": "SliceStart", "format": "MM" } },
    { "name": "Day", "value": { "type": "DateTime", "date": "SliceStart", "format": "dd" } },
    { "name": "Hour", "value": { "type": "DateTime", "date": "SliceStart", "format": "hh" } }
],

Dans cet exemple, l’année, le mois, le jour et l’heure de SliceStart sont extraits dans des variables distinctes qui sont utilisées par les propriétés folderPath et fileName.In this example, year, month, day, and time of SliceStart are extracted into separate variables that the folderPath and fileName properties use.

Propriétés de l’activité de copieCopy activity properties

Pour obtenir la liste complète des sections et des propriétés disponibles pour la définition des activités, consultez l’article Création de pipelines.For a full list of sections & properties available for defining activities, see the Creating Pipelines article. Les propriétés comme le nom, la description, les jeux de données d’entrée et de sortie et les stratégies sont disponibles pour tous les types d’activités.Properties such as name, description, input and output datasets, and policies are available for all types of activities. En revanche, les propriétés disponibles dans la section typeProperties de l’activité varient pour chaque type d’activité.Whereas, properties available in the typeProperties section of the activity vary with each activity type.

Pour l’activité de copie, elles dépendent des types de sources et récepteurs.For Copy activity, they vary depending on the types of sources and sinks. Si vous déplacez des données à partir d’un système de fichiers local, vous définissez le type de source dans l’activité de copie sur FileSystemSource.If you are moving data from an on-premises file system, you set the source type in the copy activity to FileSystemSource. De même, si vous déplacez des données vers un système de fichiers local, vous définissez le type de récepteur dans l’activité de copie sur FileSystemSink.Similarly, if you are moving data to an on-premises file system, you set the sink type in the copy activity to FileSystemSink. Cette section fournit une liste de propriétés prises en charge par FileSystemSource et FileSystemSink.This section provides a list of properties supported by FileSystemSource and FileSystemSink.

FileSystemSource prend en charge les propriétés suivantes :FileSystemSource supports the following properties:

PropriétéProperty DescriptionDescription Valeurs autoriséesAllowed values ObligatoireRequired
recursiverecursive Indique si les données sont lues de manière récursive à partir des sous-dossiers ou uniquement du dossier spécifié.Indicates whether the data is read recursively from the subfolders or only from the specified folder. True, False (par défaut)True, False (default) NonNo

FileSystemSink prend en charge les propriétés suivantes :FileSystemSink supports the following properties:

PropriétéProperty DescriptionDescription Valeurs autoriséesAllowed values ObligatoireRequired
copyBehaviorcopyBehavior Cette propriété définit le comportement de copie lorsque la source est BlobSource ou FileSystem.Defines the copy behavior when the source is BlobSource or FileSystem. PreserveHierarchy : conserve la hiérarchie des fichiers dans le dossier cible.PreserveHierarchy: Preserves the file hierarchy in the target folder. Le chemin d’accès relatif du fichier source vers le dossier source est identique au chemin d’accès relatif du fichier cible vers le dossier cible.That is, the relative path of the source file to the source folder is the same as the relative path of the target file to the target folder.

FlattenHierarchy : tous les fichiers du dossier source sont créés au premier niveau du dossier cible.FlattenHierarchy: All files from the source folder are created in the first level of target folder. Les fichiers cibles sont créés avec un nom généré automatiquement.The target files are created with an autogenerated name.

MergeFiles : fusionne tous les fichiers du dossier source dans un seul fichier.MergeFiles: Merges all files from the source folder to one file. Si le nom d’objet blob ou le nom de fichier est spécifié, le nom de fichier fusionné est le nom spécifié.If the file name/blob name is specified, the merged file name is the specified name. Dans le cas contraire, il s’agit d’un nom de fichier généré automatiquement.Otherwise, it is an auto-generated file name.
NonNo

exemples de valeurs recursive et copyBehaviorrecursive and copyBehavior examples

Cette section décrit le comportement résultant de l’opération de copie pour différentes combinaisons de valeurs pour les propriétés recursive et copyBehavior.This section describes the resulting behavior of the Copy operation for different combinations of values for the recursive and copyBehavior properties.

valeur recursiverecursive value valeur copyBehaviorcopyBehavior value Comportement résultantResulting behavior
truetrue preserveHierarchypreserveHierarchy Pour un dossier source nommé Dossier1 et structuré comme suit :For a source folder Folder1 with the following structure,

Dossier1Folder1
    Fichier1    File1
    Fichier2    File2
    Sousdossier1    Subfolder1
         Fichier3        File3
         Fichier4        File4
         Fichier5        File5

le dossier cible nommé Dossier1 est créé et structuré de la même manière que la source :the target folder Folder1 is created with the same structure as the source:

Dossier1Folder1
    Fichier1    File1
    Fichier2    File2
    Sousdossier1    Subfolder1
         Fichier3        File3
         Fichier4        File4
         Fichier5        File5
truetrue flattenHierarchyflattenHierarchy Pour un dossier source nommé Dossier1 et structuré comme suit :For a source folder Folder1 with the following structure,

Dossier1Folder1
    Fichier1    File1
    Fichier2    File2
    Sousdossier1    Subfolder1
         Fichier3        File3
         Fichier4        File4
         Fichier5        File5

le dossier cible Dossier1 est créé et structuré comme suit :the target Folder1 is created with the following structure:

Dossier1Folder1
    nom généré automatiquement pour Fichier1    auto-generated name for File1
    nom généré automatiquement pour Fichier2    auto-generated name for File2
    nom généré automatiquement pour Fichier3    auto-generated name for File3
    nom généré automatiquement pour Fichier4    auto-generated name for File4
    nom généré automatiquement pour Fichier5    auto-generated name for File5
truetrue mergeFilesmergeFiles Pour un dossier source nommé Dossier1 et structuré comme suit :For a source folder Folder1 with the following structure,

Dossier1Folder1
    Fichier1    File1
    Fichier2    File2
    Sousdossier1    Subfolder1
         Fichier3        File3
         Fichier4        File4
         Fichier5        File5

le dossier cible Dossier1 est créé et structuré comme suit :the target Folder1 is created with the following structure:

Dossier1Folder1
    Le contenu de Fichier1 + Fichier2 + Fichier3 + Fichier4 + Fichier5 est fusionné dans un fichier avec le nom de fichier généré automatiquement.    File1 + File2 + File3 + File4 + File 5 contents are merged into one file with an auto-generated file name.
falsefalse preserveHierarchypreserveHierarchy Pour un dossier source nommé Dossier1 et structuré comme suit :For a source folder Folder1 with the following structure,

Dossier1Folder1
    Fichier1    File1
    Fichier2    File2
    Sousdossier1    Subfolder1
         Fichier3        File3
         Fichier4        File4
         Fichier5        File5

le dossier cible nommé Dossier1 est créé et structuré comme suit :the target folder Folder1 is created with the following structure:

Dossier1Folder1
    Fichier1    File1
    Fichier2    File2

Sous-dossier1, où Fichier3, Fichier4 et Fichier5 ne sont pas sélectionnés.Subfolder1 with File3, File4, and File5 is not picked up.
falsefalse flattenHierarchyflattenHierarchy Pour un dossier source nommé Dossier1 et structuré comme suit :For a source folder Folder1 with the following structure,

Dossier1Folder1
    Fichier1    File1
    Fichier2    File2
    Sousdossier1    Subfolder1
         Fichier3        File3
         Fichier4        File4
         Fichier5        File5

le dossier cible nommé Dossier1 est créé et structuré comme suit :the target folder Folder1 is created with the following structure:

Dossier1Folder1
    nom généré automatiquement pour Fichier1    auto-generated name for File1
    nom généré automatiquement pour Fichier2    auto-generated name for File2

Sous-dossier1, où Fichier3, Fichier4 et Fichier5 ne sont pas sélectionnés.Subfolder1 with File3, File4, and File5 is not picked up.
falsefalse mergeFilesmergeFiles Pour un dossier source nommé Dossier1 et structuré comme suit :For a source folder Folder1 with the following structure,

Dossier1Folder1
    Fichier1    File1
    Fichier2    File2
    Sousdossier1    Subfolder1
         Fichier3        File3
         Fichier4        File4
         Fichier5        File5

le dossier cible nommé Dossier1 est créé et structuré comme suit :the target folder Folder1 is created with the following structure:

Dossier1Folder1
    Le contenu de Fichier1 + Fichier2 est fusionné dans un fichier avec un nom de fichier généré automatiquement.    File1 + File2 contents are merged into one file with an auto-generated file name.
    Nom généré automatiquement pour Fichier1    Auto-generated name for File1

Sous-dossier1, où Fichier3, Fichier4 et Fichier5 ne sont pas sélectionnés.Subfolder1 with File3, File4, and File5 is not picked up.

Formats de fichier et de compression pris en chargeSupported file and compression formats

Pour plus d’informations, voir Formats de fichiers et de compression pris en charge dans Azure Data Factory.See File and compression formats in Azure Data Factory article on details.

Exemples JSON pour copier des données vers et à partir d’un système de fichiersJSON examples for copying data to and from file system

Les exemples suivants présentent des exemples de définitions de JSON que vous pouvez utiliser pour créer un pipeline à l’aide de Visual Studio ou d’Azure PowerShell.The following examples provide sample JSON definitions that you can use to create a pipeline by using Visual Studio or Azure PowerShell. Ils indiquent comment copier des données vers et depuis un système de fichiers local et Stockage Blob Azure.They show how to copy data to and from an on-premises file system and Azure Blob storage. Toutefois, vous pouvez copier les données directement à partir de n’importe quelle source vers l’un des récepteurs répertoriés dans Sources et récepteurs pris en charge à l’aide de l’activité de copie dans Azure Data Factory.However, you can copy data directly from any of the sources to any of the sinks listed in Supported sources and sinks by using Copy Activity in Azure Data Factory.

Exemple : copier des données d’un système de fichiers local vers Stockage Blob AzureExample: Copy data from an on-premises file system to Azure Blob storage

Cet exemple indique comment copier des données depuis un système de fichiers local vers Stockage Blob Azure.This sample shows how to copy data from an on-premises file system to Azure Blob storage. L’exemple contient les entités Data Factory suivantes :The sample has the following Data Factory entities:

L’exemple suivant copie toutes les heures des données d’une série horaire d’un système de fichiers local vers Stockage Blob Azure.The following sample copies time-series data from an on-premises file system to Azure Blob storage every hour. Les propriétés JSON utilisées dans ces exemples sont décrites dans les sections suivant les exemples.The JSON properties that are used in these samples are described in the sections after the samples.

Pour commencer, configurez la passerelle de gestion des données selon les instructions décrites dans Déplacement de données entre des sources locales et le cloud à l’aide de la passerelle de gestion des données.As a first step, set up Data Management Gateway as per the instructions in Move data between on-premises sources and the cloud with Data Management Gateway.

Service lié de serveur de fichiers local :On-Premises File Server linked service:

{
  "Name": "OnPremisesFileServerLinkedService",
  "properties": {
    "type": "OnPremisesFileServer",
    "typeProperties": {
      "host": "\\\\Contosogame-Asia.<region>.corp.<company>.com",
      "userid": "Admin",
      "password": "123456",
      "gatewayName": "mygateway"
    }
  }
}

Nous vous recommandons d’utiliser la propriété encryptedCredential plutôt que les propriétés userid et password.We recommend using the encryptedCredential property instead the userid and password properties. Consultez la page Service lié de serveur de fichiers pour plus d’informations sur ce service lié.See File Server linked service for details about this linked service.

Service lié Azure Storage :Azure Storage linked service:

{
  "name": "StorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
    }
  }
}

Jeu de données d’entrée de système de fichiers local :On-premises file system input dataset:

Les données sont récupérées à partir d’un nouveau fichier toutes les heures.Data is picked up from a new file every hour. Les propriétés folderPath et fileName sont déterminées en fonction de l’heure de début de la tranche.The folderPath and fileName properties are determined based on the start time of the slice.

La définition de "external": "true" informe Data Factory que le jeu de données est externe à la Data Factory et non produit par une activité dans la Data Factory.Setting "external": "true" informs Data Factory that the dataset is external to the data factory and is not produced by an activity in the data factory.

{
  "name": "OnpremisesFileSystemInput",
  "properties": {
    "type": " FileShare",
    "linkedServiceName": " OnPremisesFileServerLinkedService ",
    "typeProperties": {
      "folderPath": "mysharedfolder/yearno={Year}/monthno={Month}/dayno={Day}",
      "fileName": "{Hour}.csv",
      "partitionedBy": [
        {
          "name": "Year",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "yyyy"
          }
        },
        {
          "name": "Month",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "MM"
          }
        },
        {
          "name": "Day",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "dd"
          }
        },
        {
          "name": "Hour",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "HH"
          }
        }
      ]
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    },
    "policy": {
      "externalData": {
        "retryInterval": "00:01:00",
        "retryTimeout": "00:10:00",
        "maximumRetry": 3
      }
    }
  }
}

Jeu de données de sortie Stockage Blob Azure :Azure Blob storage output dataset:

Les données sont écrites dans un nouvel objet blob toutes les heures (fréquence : heure, intervalle : 1).Data is written to a new blob every hour (frequency: hour, interval: 1). Le chemin d’accès du dossier pour l’objet blob est évalué dynamiquement en fonction de l’heure de début du segment en cours de traitement.The folder path for the blob is dynamically evaluated based on the start time of the slice that is being processed. Le chemin d’accès du dossier utilise l’année, le mois, le jour et l’heure de l’heure de début.The folder path uses the year, month, day, and hour parts of the start time.

{
  "name": "AzureBlobOutput",
  "properties": {
    "type": "AzureBlob",
    "linkedServiceName": "StorageLinkedService",
    "typeProperties": {
      "folderPath": "mycontainer/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}",
      "partitionedBy": [
        {
          "name": "Year",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "yyyy"
          }
        },
        {
          "name": "Month",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "MM"
          }
        },
        {
          "name": "Day",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "dd"
          }
        },
        {
          "name": "Hour",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "HH"
          }
        }
      ],
      "format": {
        "type": "TextFormat",
        "columnDelimiter": "\t",
        "rowDelimiter": "\n"
      }
    },
    "availability": {
      "frequency": "Hour",
      "interval": 1
    }
  }
}

Activité de copie dans un pipeline avec une source Système de fichiers et un récepteur blob :A copy activity in a pipeline with File System source and Blob sink:

Le pipeline contient une activité de copie qui est configurée pour utiliser les jeux de données d’entrée et de sortie, et qui est planifiée pour s’exécuter toutes les heures.The pipeline contains a copy activity that is configured to use the input and output datasets, and is scheduled to run every hour. Dans la définition du pipeline JSON, le type source est défini sur FileSystemSource et le type sink est défini sur BlobSink.In the pipeline JSON definition, the source type is set to FileSystemSource, and sink type is set to BlobSink.

{
  "name":"SamplePipeline",
  "properties":{
    "start":"2015-06-01T18:00:00",
    "end":"2015-06-01T19:00:00",
    "description":"Pipeline for copy activity",
    "activities":[
      {
        "name": "OnpremisesFileSystemtoBlob",
        "description": "copy activity",
        "type": "Copy",
        "inputs": [
          {
            "name": "OnpremisesFileSystemInput"
          }
        ],
        "outputs": [
          {
            "name": "AzureBlobOutput"
          }
        ],
        "typeProperties": {
          "source": {
            "type": "FileSystemSource"
          },
          "sink": {
            "type": "BlobSink"
          }
        },
       "scheduler": {
          "frequency": "Hour",
          "interval": 1
        },
        "policy": {
          "concurrency": 1,
          "executionPriorityOrder": "OldestFirst",
          "retry": 0,
          "timeout": "01:00:00"
        }
      }
    ]
  }
}

Exemple : copier des données d’Azure SQL Database vers un système de fichiers localExample: Copy data from Azure SQL Database to an on-premises file system

L’exemple suivant montre :The following sample shows:

L’exemple copie chaque heure des données de série horaire à partir d’une table SQL Azure vers un système de fichiers local.The sample copies time-series data from an Azure SQL table to an on-premises file system every hour. Les propriétés JSON utilisées dans ces exemples sont décrites dans les sections suivant les exemples.The JSON properties that are used in these samples are described in sections after the samples.

Service lié Azure SQL Database :Azure SQL Database linked service:

{
  "name": "AzureSqlLinkedService",
  "properties": {
    "type": "AzureSqlDatabase",
    "typeProperties": {
      "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
    }
  }
}

Service lié de serveur de fichiers local :On-Premises File Server linked service:

{
  "Name": "OnPremisesFileServerLinkedService",
  "properties": {
    "type": "OnPremisesFileServer",
    "typeProperties": {
      "host": "\\\\Contosogame-Asia.<region>.corp.<company>.com",
      "userid": "Admin",
      "password": "123456",
      "gatewayName": "mygateway"
    }
  }
}

Nous vous recommandons d’utiliser la propriété encryptedCredential plutôt que les propriétés userid et password.We recommend using the encryptedCredential property instead of using the userid and password properties. Consultez la page Service lié de système de fichiers pour plus d’informations sur ce service lié.See File System linked service for details about this linked service.

Jeu de données d'entrée SQL Azure :Azure SQL input dataset:

L’exemple suppose que vous avez créé une table « MyTable » dans SQL Azure et qu’elle contient une colonne appelée « timestampcolumn » pour les données de série chronologique.The sample assumes that you've created a table “MyTable” in Azure SQL, and it contains a column called “timestampcolumn” for time-series data.

La définition de “external”: ”true” informe Data Factory que le jeu de données est externe à la Data Factory et non produit par une activité dans la Data Factory.Setting “external”: ”true” informs Data Factory that the dataset is external to the data factory and is not produced by an activity in the data factory.

{
  "name": "AzureSqlInput",
  "properties": {
    "type": "AzureSqlTable",
    "linkedServiceName": "AzureSqlLinkedService",
    "typeProperties": {
      "tableName": "MyTable"
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    },
    "policy": {
      "externalData": {
        "retryInterval": "00:01:00",
        "retryTimeout": "00:10:00",
        "maximumRetry": 3
      }
    }
  }
}

Jeu de données de sortie de système de fichiers local :On-premises file system output dataset:

Les données sont copiées vers un nouveau fichier toutes les heures.Data is copied to a new file every hour. Les paramètres folderPath et fileName pour l’objet Blob sont déterminés en fonction de l’heure de début de la tranche.The folderPath and fileName for the blob are determined based on the start time of the slice.

{
  "name": "OnpremisesFileSystemOutput",
  "properties": {
    "type": "FileShare",
    "linkedServiceName": " OnPremisesFileServerLinkedService ",
    "typeProperties": {
      "folderPath": "mysharedfolder/yearno={Year}/monthno={Month}/dayno={Day}",
      "fileName": "{Hour}.csv",
      "partitionedBy": [
        {
          "name": "Year",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "yyyy"
          }
        },
        {
          "name": "Month",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "MM"
          }
        },
        {
          "name": "Day",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "dd"
          }
        },
        {
          "name": "Hour",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "HH"
          }
        }
      ]
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    },
    "policy": {
      "externalData": {
        "retryInterval": "00:01:00",
        "retryTimeout": "00:10:00",
        "maximumRetry": 3
      }
    }
  }
}

Activité de copie dans un pipeline avec une source SQL et un récepteur Système de fichiers :A copy activity in a pipeline with SQL source and File System sink:

Le pipeline contient une activité de copie qui est configurée pour utiliser les jeux de données d’entrée et de sortie, et qui est planifiée pour s’exécuter toutes les heures.The pipeline contains a copy activity that is configured to use the input and output datasets, and is scheduled to run every hour. Dans la définition JSON du pipeline, le type source est défini sur SqlSource et le type sink est défini sur FileSystemSink.In the pipeline JSON definition, the source type is set to SqlSource, and the sink type is set to FileSystemSink. La requête SQL spécifiée pour la propriété SqlReaderQuery sélectionne les données de la dernière heure à copier.The SQL query that is specified for the SqlReaderQuery property selects the data in the past hour to copy.

{
  "name":"SamplePipeline",
  "properties":{
    "start":"2015-06-01T18:00:00",
    "end":"2015-06-01T20:00:00",
    "description":"pipeline for copy activity",
    "activities":[
      {
        "name": "AzureSQLtoOnPremisesFile",
        "description": "copy activity",
        "type": "Copy",
        "inputs": [
          {
            "name": "AzureSQLInput"
          }
        ],
        "outputs": [
          {
            "name": "OnpremisesFileSystemOutput"
          }
        ],
        "typeProperties": {
          "source": {
            "type": "SqlSource",
            "SqlReaderQuery": "$$Text.Format('select * from MyTable where timestampcolumn >= \\'{0:yyyy-MM-dd}\\' AND timestampcolumn < \\'{1:yyyy-MM-dd}\\'', WindowStart, WindowEnd)"
          },
          "sink": {
            "type": "FileSystemSink"
          }
        },
       "scheduler": {
          "frequency": "Hour",
          "interval": 1
        },
        "policy": {
          "concurrency": 1,
          "executionPriorityOrder": "OldestFirst",
          "retry": 3,
          "timeout": "01:00:00"
        }
      }
    ]
  }
}

Vous pouvez également mapper les colonnes du jeu de données source sur les colonnes du jeu de données récepteur dans la définition de l’activité de copie.You can also map columns from source dataset to columns from sink dataset in the copy activity definition. Pour plus d’informations, consultez Mappage de colonnes de jeux de données dans Azure Data Factory.For details, see Mapping dataset columns in Azure Data Factory.

Performances et réglagePerformance and tuning

Consultez le Guide sur les performances et le réglage de l’activité de copie pour en savoir plus sur les facteurs clés affectant les performances de déplacement des données (activité de copie) dans Azure Data Factory et les différentes manières de les optimiser.To learn about key factors that impact the performance of data movement (Copy Activity) in Azure Data Factory and various ways to optimize it, see the Copy Activity performance and tuning guide.