Tous les produits
Search
Centre de documentation

DataWorks:DB2

Dernière mise à jour :Sep 24, 2026

La source de données DB2 connecte DataWorks aux bases de données IBM DB2 pour la synchronisation hors ligne des données. Utilisez-la pour lire et écrire des données dans DB2 lors de tâches de synchronisation par lots.

Versions prises en charge

DB2 Reader et DB2 Writer utilisent le pilote IBM Data Server Driver for JDBC and SQLJ version 4.11.77. Pour consulter la correspondance entre les versions du pilote DB2 et le service de base de données, reportez-vous à la documentation officielle.

Fonctionnalités prises en charge

Fonctionnalité

Prise en charge

Lecture hors ligne (synchronisation complète)

Oui

Écriture hors ligne (synchronisation complète)

Oui

Lecture depuis des vues

Oui

Synchronisation incrémentielle

Oui (via un filtre where ou querySql)

Chiffrement AES

Non

Groupes de ressources serverless

Oui

Groupes de ressources exclusifs pour Data Integration

Oui

Groupes de ressources publics

Non

Groupes de ressources personnalisés

Non

Types de champs pris en charge

DB2 Reader et DB2 Writer prennent en charge les types de données DB2 suivants pour les opérations de lecture et d'écriture hors ligne. Vérifiez vos types de données avant de configurer une tâche de synchronisation.

Catégorie de type

Types de données DB2

Types entiers

SMALLINT

Types à virgule flottante

DECIMAL, REAL, DOUBLE

Types chaîne

CHAR, CHARACTER, VARCHAR, GRAPHIC, VARGRAPHIC, LONG VARCHAR, CLOB, LONG VARGRAPHIC, DBCLOB

Types date et heure

DATE, TIME, TIMESTAMP

Types booléens

Aucun

Types binaires

BLOB

Limitations

  • Groupes de ressources : DB2 Reader et DB2 Writer prennent en charge les groupes de ressources serverless et les groupes de ressources exclusifs pour Data Integration. Les groupes de ressources publics et les groupes de ressources personnalisés ne sont pas pris en charge.

  • Comportement d'écriture : DB2 Writer insère les données à l'aide d'instructions insert into. En cas de conflit avec une clé primaire ou un index unique, les lignes concernées ne sont pas écrites. Pour optimiser les performances, DB2 Writer utilise PreparedStatement + Batch avec l'option rewriteBatchedStatements=true, mettant les données en mémoire tampon dans le contexte du thread et envoyant une requête d'écriture lorsque le seuil configuré est atteint.

    La tâche de synchronisation nécessite au minimum l'autorisation insert into. Des autorisations supplémentaires peuvent être requises selon les instructions SQL configurées dans les paramètres preSql et postSql.
  • Chiffrement : L'algorithme de chiffrement AES de DB2 n'est pas pris en charge.

Ajout d'une source de données

Ajoutez la source de données DB2 à DataWorks avant de développer une tâche de synchronisation. Suivez les instructions fournies dans la rubrique Gestion des sources de données. Les descriptions des paramètres sont disponibles dans la console DataWorks lors de l'ajout de la source de données.

Développement d'une tâche de synchronisation des données

Tâche de synchronisation hors ligne pour une table unique

Tâche de synchronisation hors ligne pour une base de données complète

Pour les étapes de configuration, reportez-vous à la rubrique Configuration de la synchronisation de base de données par lots.

FAQ

Pourquoi la base de données de secours peut-elle manquer de données lors d'une synchronisation actif/passif ?

Dans une configuration de reprise après sinistre de type actif/passif, la base de données de secours applique continuellement les modifications provenant de la base de données principale via les journaux binaires (binlogs). Ce processus implique un décalage temporel inhérent, que la latence réseau peut amplifier. Par conséquent, la base de données de secours peut ne pas refléter la base de données principale en temps réel, ce qui peut entraîner des écarts de données significatifs entre les deux.

DB2 Reader garantit-il la cohérence des données lors d'une extraction simultanée ?

DB2 est un système de gestion de base de données relationnelle (SGBDR) offrant des interfaces de requête à forte cohérence. En mode monothread, DB2 Reader lit un instantané cohérent : si une autre source écrit des données pendant l'exécution de la tâche, DB2 Reader ne récupère pas ces mises à jour.

Lorsque vous configurez une extraction simultanée à l'aide du paramètre splitPk, DB2 Reader lance plusieurs tâches qui ne font pas partie de la même transaction de lecture et s'exécutent à des moments différents. Dans ce cas, les instantanés lus par les tâches simultanées peuvent être incomplets ou incohérents. Deux solutions de contournement sont possibles :

  • Utilisez la synchronisation monothread (sans partitionnement des données). Cette approche préserve la cohérence des données, mais réduit la vitesse de synchronisation.

  • Désactivez les écritures sur la source pendant la synchronisation, par exemple en verrouillant les tables ou en suspendant la réplication vers la base de données de secours. Cela fige les données source, mais peut affecter les services en ligne.

Dois-je configurer l'encodage pour DB2 Reader ?

Non. DB2 Reader utilise Java Database Connectivity (JDBC) pour extraire les données. JDBC gère la conversion de l'encodage au niveau inférieur, de sorte que DB2 Reader détecte et transcode automatiquement l'encodage.

Comment configurer la synchronisation incrémentielle des données ?

DB2 Reader extrait les données à l'aide d'instructions SELECT JDBC. Vous pouvez donc utiliser SELECT...WHERE... pour l'extraction incrémentielle de deux manières :

  • Si l'application source renseigne un champ d'horodatage (comme une colonne modify) lors des modifications de données, configurez une clause where en utilisant l'horodatage de la dernière exécution de synchronisation. Cela permet de capturer les nouvelles lignes, les lignes mises à jour et les lignes supprimées logiquement.

  • Pour les données en ajout seul (append-only), configurez une clause where en utilisant l'ID auto-incrémenté maximal de la précédente exécution de synchronisation.

Si aucun champ ne permet de distinguer les nouvelles données des données existantes, seule la synchronisation complète est possible.

Le paramètre querySql est-il protégé contre les injections SQL ?

DB2 Reader n'effectue aucune vérification de sécurité sur l'instruction querySql. Examinez et validez toute instruction SQL personnalisée avant de configurer ce paramètre.

Annexe : Démo de script et description des paramètres

Utilisez les scripts et références de paramètres suivants lors de la configuration d'une tâche de synchronisation par lots dans l'éditeur de code. Pour la procédure générale, consultez la rubrique Configuration d'une tâche dans l'éditeur de code.

Démo de script Reader

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "db2",
            "parameter": {
                "datasource": "",
                "jdbcUrl": "",
                "username": "",
                "password": "",
                "table": "",
                "column": [
                    "id"
                ],
                "where": "",
                "splitPk": ""
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "stream",
            "parameter": {},
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": "0"
        },
        "speed": {
            "throttle": true,
            "concurrent": 1,
            "mbps": "12"
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Paramètres Reader

Paramètre

Description

Obligatoire

Valeur par défaut

datasource

Nom de la source de données tel que configuré dans DataWorks.

Oui

Aucune

jdbcUrl

URL JDBC de la base de données DB2. Format : jdbc:db2://ip:port/database. Vous pouvez ajouter des attributs de contrôle de connexion.

Oui

Aucune

username

Nom d'utilisateur de la source de données.

Oui

Aucun

password

Mot de passe associé au nom d'utilisateur.

Oui

Aucun

table

Table source. Une seule tâche peut lire une seule table.

Oui

Aucune

column

Colonnes à lire, spécifiées sous forme de tableau JSON. Toutes les colonnes : ["*"]. Prend en charge l'élagage des colonnes, le réordonnancement des colonnes et les constantes. Les constantes doivent respecter la syntaxe SQL de DB2, par exemple : ["id", "1", "'const name'", "null", "upper('abc_lower')", "2.3", "true"]. Ne peut pas être vide.

Oui

Aucune

splitPk

Champ utilisé pour partitionner les données lors d'une extraction simultanée. Utilisez la clé primaire de la table pour une distribution uniforme et afin d'éviter les points chauds de données. Seuls les champs entiers sont pris en charge ; les nombres à virgule flottante, les chaînes et les dates ne sont pas pris en charge. Si un type non pris en charge est spécifié, DB2 Reader renvoie une erreur.

Non

""

where

Condition de filtrage. DB2 Reader construit une instruction SELECT à partir des paramètres column, table et where, puis extrait les données correspondantes. Par exemple, définissez where sur gmt_create>$bizdate pour une synchronisation incrémentielle quotidienne. Si ce paramètre est laissé vide, toutes les lignes de la table sont synchronisées.

Non

Aucune

querySql

Instruction SELECT personnalisée pour les cas où le paramètre where est insuffisant, par exemple pour synchroniser les résultats d'une jointure multi-tables : select a,b from table_a join table_b on table_a.id = table_b.id. Lorsque querySql est défini, les paramètres table, column et where sont ignorés.

Non

Aucune

fetchSize

Nombre d'enregistrements récupérés par lot depuis la base de données. Une valeur plus élevée réduit les allers-retours réseau et améliore les performances d'extraction.

Non

1024

Si fetchSize dépasse 2048, une erreur d'épuisement de la mémoire (OOM) peut se produire pendant la synchronisation.

Démo de script Writer

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "stream",
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "db2",
            "parameter": {
                "jdbcUrl": "jdbc:db2://ip:port/database",
                "username": "",
                "password": "",
                "table": "",
                "column": [
                    "id"
                ],
                "preSql": [],
                "postSql": [],
                "batchSize": 1024
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": "0"
        },
        "speed": {
            "throttle": true,
            "concurrent": 1,
            "mbps": "12"
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Paramètres Writer

Paramètre

Description

Obligatoire

Valeur par défaut

jdbcUrl

URL JDBC de la base de données DB2. Format : jdbc:db2://ip:port/database. Vous pouvez ajouter des attributs de contrôle de connexion.

Oui

Aucune

username

Nom d'utilisateur de la source de données.

Oui

Aucun

password

Mot de passe associé au nom d'utilisateur.

Oui

Aucun

table

Table de destination.

Oui

Aucune

column

Colonnes de destination vers lesquelles écrire, spécifiées sous forme de tableau JSON. Exemple : ["id", "name", "age"]. Pour écrire dans toutes les colonnes dans l'ordre, utilisez ["*"].

Oui

Aucune

preSql

Instruction SQL à exécuter avant le démarrage de la tâche de synchronisation. Utilisez-la pour effacer les anciennes données ou effectuer des opérations de configuration. Une seule instruction est prise en charge.

Non

Aucune

postSql

Instruction SQL à exécuter après la fin de la tâche de synchronisation. Dans l'interface sans code, une seule instruction est prise en charge. Dans l'éditeur de code, plusieurs instructions sont prises en charge.

Non

Aucune

batchSize

Nombre d'enregistrements soumis par lot. Une valeur plus élevée réduit les allers-retours réseau et améliore le débit d'écriture. Si la valeur est trop élevée, une erreur OOM peut se produire.

Non

1024