Déplacer des données depuis Sybase à l’aide d’Azure Data FactoryMove data from Sybase 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 le Connecteur Sybase dans V2.If you are using the current version of the Data Factory service, see Sybase connector in V2.

Cet article explique comment utiliser l’activité de copie dans Azure Data Factory pour déplacer des données à partir d’une base de données Sybase locale.This article explains how to use the Copy Activity in Azure Data Factory to move data from an on-premises Sybase database. 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.

Vous pouvez copier et coller les données d’un magasin de données Sybase local dans tout magasin de données récepteur pris en charge.You can copy data from an on-premises Sybase data store to any supported sink data store. Consultez le tableau Magasins de données pris en charge pour obtenir la liste des magasins de données pris en charge en tant que récepteurs par l’activité de copie.For a list of data stores supported as sinks by the copy activity, see the Supported data stores table. Actuellement, Data Factory prend uniquement en charge le déplacement de données d’un magasin de données Sybase vers d’autres magasins de données, mais non l’inverse.Data factory currently supports only moving data from a Sybase data store to other data stores, but not for moving data from other data stores to a Sybase data store.

PrérequisPrerequisites

Le service Data Factory prend en charge la connexion à des sources Sybase locales à l'aide de la passerelle de gestion des données.Data Factory service supports connecting to on-premises Sybase sources using the Data Management Gateway. Consultez l’article Déplacement de données entre des emplacements locaux et le cloud 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.See moving data between on-premises locations and cloud article to learn about Data Management Gateway and step-by-step instructions on setting up the gateway.

Une passerelle est requise même si la base de données Sybase est hébergée sur une machine virtuelle Azure IaaS.Gateway is required even if the Sybase database is hosted in an Azure IaaS VM. Vous pouvez installer la passerelle sur la même machine virtuelle IaaS que le magasin de données, ou sur une autre machine virtuelle pourvu que la passerelle puisse se connecter à la base de données.You can install the gateway on the same IaaS VM as the data store or on a different VM as long as the gateway can connect to the database.

Notes

Consultez Résolution des problèmes de passerelle pour obtenir des conseils sur la résolution des problèmes de connexion/passerelle.See Troubleshoot gateway issues for tips on troubleshooting connection/gateway related issues.

Versions prises en charge et installationSupported versions and installation

Pour que la passerelle de gestion des données puisse se connecter à la base de données Sybase, vous devez installer la version 16 du fournisseur de données pour Sybase iAnywhere.Data.SQLAnywhere ou une version ultérieure sur le même système que la passerelle de gestion des données.For Data Management Gateway to connect to the Sybase Database, you need to install the data provider for Sybase iAnywhere.Data.SQLAnywhere 16 or above on the same system as the Data Management Gateway.

SAP Sybase SQL Anywhere (ASA) version 16 et versions ultérieures sont prises en charge ; IQ et ASE ne sont pas pris en charge.SAP Sybase SQL Anywhere (ASA) version 16 and above is supported; IQ and ASE are not supported.

Prise en mainGetting started

Vous pouvez créer un pipeline avec une activité de copie qui déplace les données d’un magasin de données Cassandra local à l’aide de différents outils/API.You can create a pipeline with a copy activity that moves data from an on-premises Cassandra data store 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 API REST.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 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.
  2. 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.
  3. 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.

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 un exemple contenant des définitions JSON pour les entités Data Factory servant à copier des données à partir d’un magasin de données Sybase local, consultez la section Exemple JSON : copier des données de Sybase vers Stockage Blob Azure de cet article.For a sample with JSON definitions for Data Factory entities that are used to copy data from an on-premises Sybase data store, see JSON example: Copy data from Sybase to Azure Blob section of this article.

Les sections suivantes contiennent des informations détaillées sur les propriétés JSON utilisées pour définir les entités Data Factory propres à un magasin de données Sybase :The following sections provide details about JSON properties that are used to define Data Factory entities specific to a Sybase data store:

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

Le tableau suivant fournit la description des éléments JSON spécifiques au service lié Sybase.The following table provides description for JSON elements specific to Sybase linked service.

PropriétéProperty DescriptionDescription ObligatoireRequired
typetype La propriété type doit être définie sur : OnPremisesSybaseThe type property must be set to: OnPremisesSybase OUIYes
serveurserver Nom du serveur Sybase.Name of the Sybase server. OUIYes
databasedatabase Nom de la base de données Sybase.Name of the Sybase database. OUIYes
schemaschema Nom du schéma dans la base de données.Name of the schema in the database. NonNo
authenticationTypeauthenticationType Type d'authentification utilisé pour se connecter à la base de données Sybase.Type of authentication used to connect to the Sybase database. Les valeurs possibles sont les suivantes : Anonymous, Basic et Windows.Possible values are: Anonymous, Basic, and Windows. OUIYes
userNameusername Spécifiez le nom d'utilisateur si vous utilisez l'authentification de base ou Windows.Specify user name if you are using Basic or Windows authentication. NonNo
passwordpassword Spécifiez le mot de passe du compte d’utilisateur que vous avez spécifié pour le nom d’utilisateur.Specify password for the user account you specified for the username. NonNo
gatewayNamegatewayName Nom de la passerelle que le service Data Factory doit utiliser pour se connecter à la base de données Sybase locale.Name of the gateway that the Data Factory service should use to connect to the on-premises Sybase database. OUIYes

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 & properties available for defining datasets, see the Creating datasets article. 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 (SQL Azure, Azure Blob, Azure Table, etc.).Sections such as structure, availability, and policy of a dataset JSON are similar for all dataset types (Azure SQL, Azure blob, Azure table, etc.).

La section typeProperties est différente pour chaque type de jeu de données et fournit des informations sur l'emplacement des données dans le magasin de données.The typeProperties section is different for each type of dataset and provides information about the location of the data in the data store. La section typeProperties pour le jeu de données de type RelationalTable (qui inclut le jeu de données Sybase) a les propriétés suivantes :The typeProperties section for dataset of type RelationalTable (which includes Sybase dataset) has the following properties:

PropriétéProperty DescriptionDescription ObligatoireRequired
tableNametableName Nom de la table dans l'instance de base de données Sybase à laquelle le service lié fait référence.Name of the table in the Sybase Database instance that linked service refers to. Non (si la requête de RelationalSource est spécifiée)No (if query of RelationalSource is specified)

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 Creating Pipelines article. Les propriétés comme le nom, la description, les tables d’entrée et de sortie et la stratégie sont disponibles pour tous les types d’activités.Properties such as name, description, input and output tables, and policy 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.

Lorsque la source est de type RelationalSource (qui inclut Sybase), les propriétés suivantes sont disponibles dans la section typeProperties :When the source is of type RelationalSource (which includes Sybase), the following properties are available in typeProperties section:

PropriétéProperty DescriptionDescription Valeurs autoriséesAllowed values ObligatoireRequired
queryquery Utilise la requête personnalisée pour lire des données.Use the custom query to read data. Chaîne de requête SQL.SQL query string. Par exemple : select * from MyTable.For example: select * from MyTable. Non (si tableName de dataset est spécifiée)No (if tableName of dataset is specified)

Exemple JSON : copier des données de Sybase vers Stockage Blob AzureJSON example: Copy data from Sybase to Azure Blob

L’exemple suivant présente des exemples de définitions JSON que vous pouvez utiliser pour créer un pipeline à l’aide de Visual Studio ou d’Azure PowerShell.The following example provides 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 depuis une base de données Sybase vers Azure Blob Storage.They show how to copy data from Sybase database to Azure Blob Storage. Toutefois, les données peuvent être copiées vers l’un des récepteurs indiqués ici , via l’activité de copie d’Azure Data Factory.However, data can be copied to any of the sinks stated here using the Copy Activity in Azure Data Factory.

L’exemple contient les entités de fabrique de données suivantes :The sample has the following data factory entities:

  1. Un service lié de type OnPremisesSybase.A linked service of type OnPremisesSybase.
  2. Un service lié de type Stockage Azure.A liked service of type AzureStorage.
  3. Un jeu de données d’entrée de type RelationalTable.An input dataset of type RelationalTable.
  4. Un jeu de données de sortie de type AzureBlob.An output dataset of type AzureBlob.
  5. Le pipeline avec une activité de copie qui utilise RelationalSource et BlobSink.The pipeline with Copy Activity that uses RelationalSource and BlobSink.

L'exemple copie toutes les heures les données de résultat d’une requête de base de données Sybase vers un objet blob.The sample copies data from a query result in Sybase database to a blob every hour. Les propriétés JSON utilisées dans ces exemples sont décrites dans les sections suivant les exemples.The JSON properties used in these samples are described in sections following the samples.

Dans un premier temps, configurez la passerelle de gestion des données.As a first step, setup the data management gateway. Les instructions se trouvent dans l’article Déplacement de données entre des emplacements locaux et le cloud .The instructions are in the moving data between on-premises locations and cloud article.

Service lié Sybase :Sybase linked service:

{
    "name": "OnPremSybaseLinkedService",
    "properties": {
        "type": "OnPremisesSybase",
        "typeProperties": {
            "server": "<server>",
            "database": "<database>",
            "schema": "<schema>",
            "authenticationType": "<authentication type>",
            "username": "<username>",
            "password": "<password>",
            "gatewayName": "<gatewayName>"
        }
    }
}

Service lié Azure Blob Storage :Azure Blob storage linked service:

{
    "name": "AzureStorageLinkedService",
    "properties": {
        "type": "AzureStorageLinkedService",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<AccountName>;AccountKey=<AccountKey>"
        }
    }
}

Jeu de données d’entrée Sybase :Sybase input dataset:

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

La définition de external sur true informe le service Data Factory que le jeu de données est externe à la Data Factory et non produite par une activité dans la Data Factory.Setting “external”: true informs the Data Factory service that this dataset is external to the data factory and is not produced by an activity in the data factory. Notez que le type du service lié est défini sur RelationalTable.Notice that the type of the linked service is set to: RelationalTable.

{
    "name": "SybaseDataSet",
    "properties": {
        "type": "RelationalTable",
        "linkedServiceName": "OnPremSybaseLinkedService",
        "typeProperties": {},
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "external": true,
        "policy": {
            "externalData": {
                "retryInterval": "00:01:00",
                "retryTimeout": "00:10:00",
                "maximumRetry": 3
            }
        }
    }
}

Jeu de données de sortie d'objet Blob Azure :Azure Blob 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 year, month, day, and hours parts of the start time.

{
    "name": "AzureBlobSybaseDataSet",
    "properties": {
        "type": "AzureBlob",
        "linkedServiceName": "AzureStorageLinkedService",
        "typeProperties": {
            "folderPath": "mycontainer/sybase/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}",
            "format": {
                "type": "TextFormat",
                "rowDelimiter": "\n",
                "columnDelimiter": "\t"
            },
            "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"
                    }
                }
            ]
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        }
    }
}

Pipeline avec activité de copie :Pipeline with Copy activity:

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 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 hourly. Dans la définition du pipeline JSON, le type source est défini sur RelationalSource et le type sink est défini sur BlobSink.In the pipeline JSON definition, the source type is set to RelationalSource and sink type is set to BlobSink. La requête SQL spécifiée pour la propriété query sélectionne les données de la table DBA.Orders dans la base de données.The SQL query specified for the query property selects the data from the DBA.Orders table in the database.

{
    "name": "CopySybaseToBlob",
    "properties": {
        "description": "pipeline for copy activity",
        "activities": [
            {
                "type": "Copy",
                "typeProperties": {
                    "source": {
                        "type": "RelationalSource",
                        "query": "select * from DBA.Orders"
                    },
                    "sink": {
                        "type": "BlobSink"
                    }
                },
                "inputs": [
                    {
                        "name": "SybaseDataSet"
                    }
                ],
                "outputs": [
                    {
                        "name": "AzureBlobSybaseDataSet"
                    }
                ],
                "policy": {
                    "timeout": "01:00:00",
                    "concurrency": 1
                },
                "scheduler": {
                    "frequency": "Hour",
                    "interval": 1
                },
                "name": "SybaseToBlob"
            }
        ],
        "start": "2014-06-01T18:00:00Z",
        "end": "2014-06-01T19:00:00Z"
    }
}

Mappage de type pour SybaseType mapping for Sybase

Comme mentionné dans l’article consacré aux activités de déplacement des données , l’activité de copie convertit automatiquement les types source en types récepteur à l’aide de l’approche en 2 étapes suivante :As mentioned in the Data Movement Activities article, the Copy activity performs automatic type conversions from source types to sink types with the following 2-step approach:

  1. Conversion de types natifs source en types .NETConvert from native source types to .NET type
  2. Conversion à partir du type .NET en type de récepteur natifConvert from .NET type to native sink type

Sybase prend en charge les types T-SQL et T-SQL.Sybase supports T-SQL and T-SQL types. Pour une table de mappage de types SQL en un type .NET, consultez l’article Connecteur Azure SQL .For a mapping table from sql types to .NET type, see Azure SQL Connector article.

Mapper les colonnes source aux colonnes du récepteurMap source to sink columns

Pour en savoir plus sur le mappage de colonnes du jeu de données source à des colonnes du jeu de données récepteur, voir Mappage des colonnes d’un jeu de données dans Azure Data Factory.To learn about mapping columns in source dataset to columns in sink dataset, see Mapping dataset columns in Azure Data Factory.

Lecture renouvelée de sources relationnellesRepeatable read from relational sources

Lorsque vous copiez des données à partir de magasins de données relationnels, gardez à l’esprit la répétabilité de l’opération, afin d’éviter des résultats imprévus.When copying data from relational data stores, keep repeatability in mind to avoid unintended outcomes. Dans Azure Data Factory, vous pouvez réexécuter une tranche manuellement.In Azure Data Factory, you can rerun a slice manually. Vous pouvez également configurer une stratégie de nouvelles tentatives pour un jeu de données, afin qu’une tranche soit réexécutée en cas de défaillance.You can also configure retry policy for a dataset so that a slice is rerun when a failure occurs. Lorsqu’une tranche est réexécutée d’une manière ou d’une autre, vous devez vous assurer que les mêmes données sont lues et ce, quel que soit le nombre d’exécutions de la tranche.When a slice is rerun in either way, you need to make sure that the same data is read no matter how many times a slice is run. Voir Lecture renouvelée de sources relationnelles.See Repeatable read from relational sources.

Performances et réglagePerformance and Tuning

Consultez l’article 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.See Copy Activity Performance & Tuning Guide to learn about key factors that impact performance of data movement (Copy Activity) in Azure Data Factory and various ways to optimize it.