Tous les produits
Search
Centre de documentation

DataWorks:Source de données PolarDB

Dernière mise à jour :Aug 25, 2026

La source de données PolarDB permet la lecture et l'écriture de données depuis et vers PolarDB. Configurez une tâche de synchronisation via l'interface sans code ou en mode script.

Limitations

Lecture et écriture par lots

La lecture des données depuis des vues est possible.

Lecture en temps réel

Si vous utilisez un cluster PolarDB for MySQL comme source, activez le journal binaire. PolarDB for MySQL est une base de données cloud-native entièrement compatible avec MySQL. Par défaut, PolarDB for MySQL utilise des journaux physiques de haut niveau plutôt que le journal binaire. Pour une meilleure intégration à l'écosystème MySQL, PolarDB permet d'activer le journal binaire.

Types de données pris en charge

Lecture par lots

Le tableau suivant présente les mappages de types de données pour PolarDB Reader.

Catégorie

Type de données PolarDB

Entier

INT, TINYINT, SMALLINT, MEDIUMINT et BIGINT

Virgule flottante

FLOAT, DOUBLE et DECIMAL

Chaîne

VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT et LONGTEXT

Date et heure

DATE, DATETIME, TIMESTAMP, TIME et YEAR

Booléen

BIT et BOOL

Binaire

TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB et VARBINARY

Remarque
  • Les types de données non répertoriés dans le tableau ne sont pas pris en charge.

  • Le plug-in PolarDB Reader traite TINYINT(1) comme un entier.

Écriture par lots

Comme PolarDB Reader, PolarDB Writer prend en charge la plupart des types de données PolarDB, mais pas tous. Vérifiez la compatibilité de vos types de données.

Le tableau suivant présente les mappages de types de données pour PolarDB Writer.

Catégorie

Type de données PolarDB

Entier

INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT et YEAR

Virgule flottante

FLOAT, DOUBLE et DECIMAL

Chaîne

VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT et LONGTEXT

Date et heure

DATE, DATETIME, TIMESTAMP et TIME

Booléen

BOOL

Binaire

TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB et VARBINARY

Prérequis

Configurer une liste blanche d'adresses IP

Ajoutez le bloc CIDR du VPC contenant votre groupe de ressources Serverless ou groupe de ressources exclusif pour Data Integration à la liste blanche d'adresses IP de votre cluster PolarDB. Pour plus d'informations, consultez la rubrique Définir une liste blanche de cluster.

Créer un compte et accorder des autorisations

Créez un compte et accordez-lui les autorisations requises.

Créez un compte de base de données dédié à la synchronisation des données. Ce compte doit disposer des autorisations SELECT, REPLICATION SLAVE, REPLICATION CLIENT sur la base de données.

  1. Créez un compte.

    Pour plus d'informations, consultez la rubrique Créer et gérer un compte de base de données.

  2. Accordez des autorisations.

    Exécutez la commande suivante pour accorder les autorisations requises au compte. Vous pouvez également accorder l'autorisation SUPER.

    -- CREATE USER 'sync_account'@'%' IDENTIFIED BY 'your_password';
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'sync_account'@'%';

Activer la journalisation binaire

Pour plus d'informations, consultez la rubrique Activer la journalisation binaire.

Ajouter une source de données

Avant de développer une tâche de synchronisation dans DataWorks, ajoutez la source de données requise à DataWorks en suivant les instructions de la rubrique Configuration de la source de données. Consultez les descriptions des paramètres dans la console DataWorks pour comprendre leur signification lors de l'ajout d'une source de données.

Configurer une tâche de synchronisation

Pour connaître le point d'entrée et la procédure de configuration d'une tâche de synchronisation, reportez-vous aux guides suivants.

Configurer une tâche par lots pour une seule table

Configurer la synchronisation en temps réel pour une table ou une base de données

Pour plus d'informations, consultez la rubrique Configurer une tâche de synchronisation en temps réel (héritée).

Configurer la lecture par lots de toute la base de données et la synchronisation incrémentielle en temps réel

Pour plus d'informations, consultez la rubrique Configurer une tâche de synchronisation en temps réel pour toute la base de données.

FAQ

Pourquoi des erreurs sont-elles signalées de manière répétée lorsqu'une tâche de synchronisation en temps réel s'exécute pour synchroniser des données depuis Oracle, PolarDB ou MySQL ?

Annexe : Exemple de script et paramètres

Configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code

Pour configurer une tâche de synchronisation par lots via l'éditeur de code, définissez les paramètres associés dans le script conformément aux exigences de format unifié. Pour plus d'informations, consultez la rubrique Configuration en mode script. Les informations suivantes décrivent les paramètres à configurer pour les sources de données lors de la configuration d'une tâche de synchronisation par lots via l'éditeur de code.

Exemple de script Reader

Le code suivant fournit un exemple de script pour la lecture des données d'une seule table dans une base de données. Pour plus d'informations sur les paramètres, consultez la section de description des paramètres.

{
    "type": "job",
    "steps": [
        {
            "parameter": {
                "datasource": "test_005",                // The name of the data source.
                "column": [                              // The source column names.
                    "id",
                    "name",
                    "age",
                    "sex",
                    "salary",
                    "interest"
                ],
                "where": "id=1001",                      // The filter condition.
                "splitPk": "id",                         // The sharding key.
                "table": "PolarDB_person",               // The source table name.
              	"useReadonly": "false"                   // Specifies whether to read data from a secondary database.
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "parameter": {}
    ],
    "version": "2.0",                                // The version number.
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    },
    "setting": {
        "errorLimit": {                              // The error tolerance.
            "record": ""
        },
        "speed": {
            "concurrent": 6,                         // The concurrency level.
            "throttle": true,                        // If throttle is set to false, the mbps parameter does not take effect and throttling is disabled. If throttle is set to true, throttling is enabled.
      "mbps":"12"                              // The throttling rate, in MB/s.
        }
    }
}

Paramètres du script Reader

Paramètre

Description

Obligatoire

Valeur par défaut

datasource

Nom de la source de données. En mode script, la valeur de ce paramètre doit correspondre exactement au nom de la source de données ajoutée.

Oui

Aucune

table

Nom de la table source à partir de laquelle vous souhaitez synchroniser les données.

Oui

Aucune

useReadonly

Indique s'il faut lire les données à partir d'une base de données secondaire. Si vous définissez ce paramètre sur true, les données sont lues depuis la base de données secondaire. Si vous omettez ce paramètre, la valeur par défaut false s'applique et les données sont lues depuis la base de données principale.

Non

false

column

Colonnes de la table source à synchroniser. La valeur doit être un tableau JSON. Ce paramètre est obligatoire et ne peut pas être vide. Exemple : ["*"].

  • Vous pouvez sélectionner un sous-ensemble de colonnes à exporter.

  • Vous pouvez réorganiser les colonnes à exporter indépendamment du schéma de la table.

  • Vous pouvez utiliser des constantes en respectant la syntaxe SQL. Exemple : ["id", "table","1","'mingya.wmy'","'null'", "to_char(a+1)","2,3","true"].

    • id : nom de colonne standard.

    • table : nom de colonne qui est également un mot clé réservé.

    • 1 : constante entière.

    • 'mingya.wmy' : constante de chaîne. Notez que la constante de chaîne doit être entourée de guillemets simples.

    • 'null' : constante de chaîne.

    • to_char(a+1) : fonction qui calcule la longueur d'une chaîne.

    • 2,3 : nombre à virgule flottante.

    • true : valeur booléenne.

  • Le paramètre column est obligatoire et ne peut pas être vide. Spécifiez les colonnes à synchroniser.

Oui

Aucune

splitPk

Clé de partitionnement. Spécifiez une colonne pour le paramètre splitPk afin de partitionner les données, ce qui permet un traitement simultané et améliore l'efficacité de la synchronisation.

  • Nous vous recommandons d'utiliser la clé primaire de la table comme valeur du paramètre splitPk. Une clé primaire est généralement distribuée de manière uniforme, ce qui évite les points chauds de données dans les partitions créées.

  • Le paramètre splitPk prend uniquement en charge le partitionnement des données basé sur des entiers. Les types de données chaîne, virgule flottante, date et autres ne sont pas pris en charge. Si vous spécifiez une colonne d'un type de données non pris en charge, le partitionnement des données est désactivé et les données sont synchronisées via un seul thread.

  • Si vous ne spécifiez pas le paramètre splitPk ou si vous le définissez sur null, un seul thread est utilisé pour la synchronisation des données.

Non

Aucune

splitFactor

Facteur de partitionnement. Ce paramètre spécifie le nombre de partitions. Si vous configurez un niveau de simultanéité, les données sont partitionnées en concurrency × splitFactor partitions. Par exemple, si la simultanéité est de 5 et que splitFactor est de 5, les données sont divisées en 25 partitions et traitées par 5 threads simultanés.

Remarque

Nous vous recommandons de définir ce paramètre sur une valeur comprise entre 1 et 100. Une valeur excessivement élevée peut provoquer une erreur de mémoire insuffisante (OOM).

Non

5

where

Condition de filtrage. Par exemple, pour synchroniser uniquement les données du jour en cours, définissez le paramètre where sur gmt_create>$bizdate.

  • La condition where permet d'effectuer efficacement une synchronisation incrémentielle. Si vous ne spécifiez pas de clause where, toutes les données sont synchronisées.

  • Nous vous déconseillons de spécifier LIMIT 10 comme condition where, car cela ne respecte pas les contraintes d'une clause WHERE.

Non

Aucune

querySql (Mode avancé, non disponible dans l'interface sans code)

Dans certains scénarios, le paramètre where est insuffisant pour décrire les conditions de filtrage. Utilisez ce paramètre pour définir une requête SQL personnalisée. Lorsque ce paramètre est configuré, le système de synchronisation des données ignore les paramètres column, table et where et utilise directement le contenu de ce paramètre pour filtrer les données. Par exemple, pour synchroniser des données après une jointure multi-tables, utilisez select a,b from table_a join table_b on table_a.id = table_b.id. Lorsque vous configurez querySql, PolarDB Reader ignore directement les paramètres column, table et where. Le paramètre querySql a une priorité plus élevée que les paramètres table, column, where et splitPk. La source de données est utilisée pour analyser des informations telles que le nom d'utilisateur et le mot de passe.

Non

Aucune

Exemple de script Writer

Le code suivant fournit un exemple de configuration de script. Pour plus d'informations sur les paramètres, consultez la section de description des paramètres.

{
    "type": "job",
    "steps": [
        {
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "parameter": {
                "postSql": [],                        // The SQL statement to be executed after the synchronization task is complete.
                "datasource": "test_005",             // The name of the data source.
                "column": [                           // The destination column names.
                    "id",
                    "name",
                    "age",
                    "sex",
                    "salary",
                    "interest"
                ],
                "writeMode": "insert",                // The write mode.
                "batchSize": 256,                     // The number of records to submit in each batch.
                "table": "PolarDB_person_copy",       // The destination table name.
                "preSql": []                          // The SQL statement to be executed before the synchronization task starts.
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "version": "2.0",                             // The version number.
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    },
    "setting": {
        "errorLimit": {                           // The error tolerance.
            "record": ""
        },
        "speed": {
            "throttle":true,                      // If throttle is set to false, the mbps parameter does not take effect and throttling is disabled. If throttle is set to true, throttling is enabled.
            "concurrent":6,                       // The concurrency level.
            "mbps":"12"                           // The throttling rate, in MB/s.
        }
    }
}

Paramètres du script Writer

  • Tous les paramètres

    Paramètre

    Description

    Obligatoire

    Valeur par défaut

    datasource

    Nom de la source de données. En mode script, la valeur de ce paramètre doit correspondre exactement au nom de la source de données ajoutée.

    Oui

    Aucune

    table

    Nom de la table de destination vers laquelle vous souhaitez synchroniser les données.

    Oui

    Aucune

    writeMode

    Mode d'écriture. Valeurs valides :

    • insert : correspond à INSERT INTO dans l'interface sans code.

    • update : correspond à ON DUPLICATE KEY UPDATE dans l'interface sans code.

    • replace : correspond à REPLACE INTO dans l'interface sans code.

    Pour plus d'informations sur les modes et des exemples, consultez la section Détails du paramètre writeMode ci-dessous.

    Remarque

    Pour PolarDB for PostgreSQL, seul le mode insert est pris en charge. Pour mettre à jour les données et éviter les conflits de clé primaire, supprimez les données en double avant d'exécuter la tâche de synchronisation par lots. Les méthodes suivantes sont recommandées :

    • Méthode 1 : Dans le paramètre preSql (qui correspond à Pre-Import Statement dans l'interface sans code), configurez une instruction TRUNCATE pour vider la table de destination.

    • Méthode 2 : Traitez la table de destination dans un nœud en amont pour éviter les conflits de clé primaire lors de la synchronisation des données.

    Non

    insert

    column

    Colonnes de destination vers lesquelles vous souhaitez écrire les données. Séparez les colonnes par des virgules (,). Exemple : "column": ["id", "name", "age"]. Pour écrire les données dans toutes les colonnes dans l'ordre, utilisez un astérisque (). Exemple : "column": [""].

    Oui

    Aucune

    preSql

    Spécifie une ou plusieurs instructions SQL à exécuter avant le démarrage de la tâche. L'interface sans code prend en charge une seule instruction, tandis que le mode script prend en charge plusieurs instructions, telles que des instructions pour effacer les données existantes.

    Non

    Aucune

    postSql

    Spécifie une ou plusieurs instructions SQL à exécuter une fois la tâche terminée. L'interface sans code prend en charge une seule instruction, tandis que le mode script prend en charge plusieurs instructions, telles qu'une instruction pour ajouter un horodatage.

    Non

    Aucune

    batchSize

    Nombre d'enregistrements à soumettre par lot. Des valeurs plus élevées peuvent améliorer le débit en réduisant les interactions réseau avec PolarDB, mais une valeur excessivement élevée peut provoquer une erreur de mémoire insuffisante (OOM).

    Non

    1024

    updateColumn

    Colonnes à mettre à jour en cas de conflit de clé primaire ou d'index unique. Ce paramètre n'est valide que lorsque writeMode est défini sur update. Vous pouvez spécifier plusieurs colonnes, séparées par des virgules. Exemple : "updateColumn": ["name", "age"].

    Remarque

    Ce paramètre est pris en charge uniquement pour PolarDB for MySQL.

    Non

    Aucune

  • Détails du paramètre writeMode

    Comparaison

    insert (correspond à INSERT INTO dans l'interface sans code)

    update (correspond à ON DUPLICATE KEY UPDATE dans l'interface sans code)

    replace (correspond à REPLACE INTO dans l'interface sans code)

    Stratégie de gestion des conflits

    En cas de conflit de clé primaire ou d'index unique, la ligne conflictuelle n'est pas écrite dans la table de destination et est traitée comme des données erronées.

    S'il n'y a aucun conflit de clé primaire ou d'index unique, ce mode fonctionne de la même manière que le mode INSERT INTO. En cas de conflit, la nouvelle ligne met à jour uniquement les champs spécifiés de la ligne existante.

    S'il n'y a aucun conflit de clé primaire ou d'index unique, ce mode fonctionne de la même manière que le mode INSERT INTO. En cas de conflit, la ligne existante est supprimée et la nouvelle ligne est insérée, remplaçant ainsi tous ses champs.

    Exemple de données

    • Table source

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 1  | zhangsan| 1   |
      | 2  | lisi    |     |
      +----+---------+-----+
    • Table de destination d'origine

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 2  | wangwu  |     |
      +----+---------+-----+
    • Une fois la tâche exécutée, une ligne est écrite dans la table de destination et une ligne est enregistrée comme donnée erronée.

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 1  | zhangsan| 1   |
      | 2  | wangwu  |     |
      +----+---------+-----+
    • Scénario 1 : La tâche est configurée pour synchroniser uniquement certaines colonnes : "column": ["id","name"]

      • Table source

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 1  | zhangsan| 1   |
        | 2  | lisi    |     |
        +----+---------+-----+
      • Table de destination d'origine

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 2  | wangwu  |  3  |
        +----+---------+-----+
      • Une fois la tâche exécutée, deux lignes sont écrites dans la table de destination et aucune donnée erronée n'est enregistrée.

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 1  | zhangsan| 1   |
        | 2  | lisi    | 3   |
        +----+---------+-----+
    • Scénario 2 : La tâche est configurée pour synchroniser toutes les colonnes : "column": ["id","name","age"]

      • Table source

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 1  | zhangsan| 1   |
        | 2  | lisi    |     |
        +----+---------+-----+
      • Table de destination d'origine

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 2  | wangwu  |  3  |
        +----+---------+-----+
      • Une fois la tâche exécutée, deux lignes sont écrites dans la table de destination et aucune donnée erronée n'est enregistrée.

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 1  | zhangsan| 1   |
        | 2  | lisi    |     |
        +----+---------+-----+
    • Table source

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 1  | zhangsan| 1   |
      | 2  | lisi    |     |
      +----+---------+-----+
    • Table de destination d'origine

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 2  | wangwu  |  3  |
      +----+---------+-----+
    • Une fois la tâche exécutée, deux lignes sont écrites dans la table de destination et aucune donnée erronée n'est enregistrée.

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 1  | zhangsan| 1   |
      | 2  | lisi    |     |
      +----+---------+-----+