Tous les produits
Search
Centre de documentation

DataWorks:DB2

Dernière mise à jour :Aug 10, 2026

La source de données DB2 connecte DataWorks aux bases de données IBM DB2 pour la synchronisation des données hors ligne. 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 le 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 écrit les données à l'aide d'instructions insert into. En cas de conflit avec une clé primaire ou un index unique, les lignes conflictuelles ne sont pas écrites. Pour optimiser les performances, DB2 Writer utilise PreparedStatement + Batch avec 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 requiert au minimum l'autorisation insert into. Des autorisations supplémentaires peuvent être nécessaires 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 décrites dans la section 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 connaître les étapes de configuration, consultez la section Configuration d'une tâche de synchronisation en temps réel pour une base de données complète.

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 actif/passif, la base de données de secours applique continuellement les modifications 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 aggraver. 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 de l'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 disponibles :

  • Utilisez la synchronisation monothread (sans partitionnement des données). Cette méthode 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 maintient les données sources statiques, 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 d'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 (tel qu'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, 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 tout SQL personnalisé 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 section 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 Le nom de la source de données tel que configuré dans DataWorks. Oui Aucune
jdbcUrl L'URL JDBC pour 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 Le nom d'utilisateur pour la source de données. Oui Aucune
password Le mot de passe associé au nom d'utilisateur. Oui Aucune
table La table source. Une seule tâche peut lire une seule table. Oui Aucune
column Les 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 DB2, par exemple : ["id", "1", "'const name'", "null", "upper('abc_lower')", "2.3", "true"]. Ne peut pas être vide. Oui Aucune
splitPk Le champ utilisé pour partitionner les données lors de l'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 Une condition de filtre. 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 champ est laissé vide, toutes les lignes de la table sont synchronisées. Non Aucune
querySql Une instruction SELECT personnalisée pour les cas où where ne suffit pas, 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 Le 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 L'URL JDBC pour 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 Le nom d'utilisateur pour la source de données. Oui Aucune
password Le mot de passe associé au nom d'utilisateur. Oui Aucune
table La table de destination. Oui Aucune
column Les 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 Une instruction SQL à exécuter avant le début 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 Une 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 Le 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 elle est définie trop haut, une erreur OOM peut se produire. Non 1024