La source de données KingbaseES permet la synchronisation bidirectionnelle des données entre KingbaseES et DataWorks Data Integration. Utilisez-la pour lire les données de KingbaseES dans votre pipeline ou écrire les données traitées vers KingbaseES.
Limites
Groupes de ressources pris en charge : Groupes de ressources sans serveur (recommandé) et groupes de ressources exclusifs pour Data Integration uniquement.
Autorisation requise : La tâche de synchronisation nécessite les autorisations
insert/replace into. Utilisez les paramètrespreSqletpostSqlpour déterminer si des autorisations supplémentaires sont nécessaires.
Types de champs pris en charge
Le tableau suivant répertorie les types de données pris en charge par le lecteur KingbaseES. Les types de champs non répertoriés ne sont pas pris en charge.
| Catégorie | Types de données | Notes |
|---|---|---|
| Entier | INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT | tinyint(1) est traité comme un entier, et non comme un booléen |
| Virgule flottante | FLOAT, DOUBLE, DECIMAL | |
| Chaîne | VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT | |
| Date et heure | DATE, DATETIME, TIMESTAMP, TIME, YEAR | |
| Booléen | BIT, BOOL | |
| Binaire | TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB, VARBINARY |
Ajout d'une source de données
Avant de développer une tâche de synchronisation, ajoutez la source de données KingbaseES dans DataWorks. Pour obtenir des instructions, consultez 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
Configuration d'une tâche de synchronisation hors ligne pour une table unique
Utilisez l'une des méthodes suivantes pour configurer une tâche de synchronisation hors ligne :
Interface sans code : Configuration d'une tâche dans l'interface sans code
Éditeur de code : Configuration d'une tâche dans l'éditeur de code
Pour connaître tous les paramètres et consulter un exemple de script pour l'éditeur de code, reportez-vous à la section Annexe : Démonstration de script et descriptions des paramètres.
Annexe : Démonstration de script et descriptions des paramètres
Pour configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code, définissez les paramètres requis dans le script en respectant le format de script unifié. Pour plus d'informations, consultez la rubrique Configuration d'une tâche dans l'éditeur de code.
Exemple de script du lecteur
Base de données unique et table unique
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "kingbasees",
"parameter": {
"column": [
"id"
],
"connection": [
{
"querySql": ["select a,b from join1 c join join2 d on c.id = d.id;"],
"datasource": "",
"table": [
"xxx"
]
}
],
"where": "",
"splitPk": "",
"encoding": "UTF-8"
},
"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"
}
]
}
}
Bases de données et tables fragmentées
Lors de l'utilisation de tables fragmentées, toutes les tables KingbaseES sélectionnées doivent avoir le même schéma.
{
"type": "job",
"version": "1.0",
"configuration": {
"reader": {
"plugin": "kingbasees",
"parameter": {
"connection": [
{
"table": ["tbl1", "tbl2", "tbl3"],
"datasource": "datasourceName1"
},
{
"table": ["tbl4", "tbl5", "tbl6"],
"datasource": "datasourceName2"
}
],
"singleOrMulti": "multi",
"splitPk": "db_id",
"column": ["id", "name", "age"],
"where": "1 < id and id < 100"
}
},
"writer": {}
}
}
Paramètres du lecteur
| Paramètre | Description | Obligatoire | Valeur par défaut |
|---|---|---|---|
username |
Nom d'utilisateur pour la connexion à KingbaseES. | Non | Aucune |
password |
Mot de passe pour la connexion à KingbaseES. | Non | Aucune |
column |
Champs à synchroniser. Utilisez * pour synchroniser toutes les colonnes. |
Non | Aucune |
table |
Nom de la table à synchroniser. Utilisez le format de tableau même pour une table unique : ["tablename"]. |
Non | Aucune |
jdbcUrl |
URL JDBC (Java Database Connectivity) pour la connexion à KingbaseES. Exemple : jdbc:kingbase8://127.0.0.1:30215?currentschema=TEST. |
Non | Aucune |
querySql |
Requête SQL personnalisée utilisée pour filtrer les données. Lorsqu'elle est spécifiée, le lecteur ignore les paramètres table, column et where et utilise directement cette requête. |
Non | Aucune |
where |
Condition de filtre appliquée à la table. Ignorée lorsque le paramètre querySql est spécifié. |
Non | Aucune |
splitPk |
Champ entier numérique dans la table KingbaseES utilisé comme clé de fragmentation pour permettre une synchronisation à haute concurrence. Laissez ce champ vide si aucun champ de ce type n'existe. | Non | Aucune |
encoding |
Format d'encodage des données. | Non | UTF-8 |
Exemple de script de l'outil d'écriture
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "kingbasees",
"parameter": {
"postSql": [],
"datasource": "",
"column": ["id", "value"],
"batchSize": 1024,
"table": "",
"preSql": [
"delete from XXX;"
]
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Paramètres de l'outil d'écriture
| Paramètre | Description | Obligatoire | Valeur par défaut |
|---|---|---|---|
datasource |
Nom de la source de données. Doit correspondre au nom de la source de données ajoutée dans DataWorks. | Oui | Aucune |
table |
Nom de la table de destination. | Oui | Aucune |
column |
Champs de la table de destination vers lesquels écrire les données. Séparez plusieurs champs par des virgules. Exemple : ["id", "name", "age"]. Pour écrire dans toutes les colonnes dans l'ordre, utilisez ["*"]. Si un nom de champ contient une barre oblique (/), échappez-le : \"/field/name\". |
Oui | Aucune |
preSql |
Instruction SQL à exécuter avant le démarrage de la tâche de synchronisation. Utilisez cette option pour préparer la table de destination, par exemple : truncate table tablename. L'interface sans code prend en charge une seule instruction ; l'éditeur de code prend en charge plusieurs instructions. Les instructions multiples ne prennent pas en charge l'atomicité des transactions. |
Non | Aucune |
postSql |
Instruction SQL à exécuter après la fin de la tâche de synchronisation. Par exemple : alter table tablename add colname timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP. L'interface sans code prend en charge une seule instruction ; l'éditeur de code prend en charge plusieurs instructions. |
Non | Aucune |
batchSize |
Nombre d'enregistrements à soumettre en un seul lot. Des valeurs plus élevées réduisent les allers-retours réseau et améliorent le débit, mais des valeurs trop importantes peuvent provoquer des erreurs de dépassement de mémoire (OOM). | Non | 1024 |