La source de données SAP HANA vous permet de lire et d'écrire des données depuis et vers SAP HANA dans DataWorks.
Versions prises en charge
DataBase 2.00.048.06.1623425628
DataBase 2.00.055.00.161
Limites
La synchronisation hors ligne prend en charge la lecture des données à partir des vues.
Cette source de données prend en charge les groupes de ressources serverless (recommandé) et les groupes de ressources exclusifs pour Data Integration.
Types de champs pris en charge
Le lecteur SAP HANA prend en charge les types de données suivants.
| Catégorie de type | Types de données |
|---|---|
| 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 |
Les types de données non répertoriés ci-dessus ne sont pas pris en charge. Le lecteur SAP HANA traite le type tinyint(1) comme un entier.
Ajouter une source de données
Ajoutez SAP HANA en tant que source de données dans DataWorks avant de développer une tâche de synchronisation. Pour obtenir des instructions, consultez la rubrique Gestion des sources de données.
Les descriptions des paramètres sont disponibles directement dans la console DataWorks lorsque vous ajoutez la source de données.
Lorsque vous configurez une source de données SAP HANA, les paramètres de connexion JDBC tels que socketTimeout ne sont pas acceptés dans le champ Advanced parameters, qui ne prend en charge qu'un sous-ensemble de propriétés du pilote, telles que connectTimeout et useSSL. Pour définir ces paramètres, ajoutez-les à la valeur du champ Database name sous la forme dbname?key=value. Par exemple, définissez Database name sur testdb?socketTimeout=60000, ce qui génère l'URL JDBC suivante : jdbc:sap://<host>:<port>/testdb?socketTimeout=60000.
Développer une tâche de synchronisation des données
Configurer une tâche de synchronisation hors ligne pour une seule table
Utilisez l'interface utilisateur sans code ou l'éditeur de code pour configurer la tâche :
Pour connaître tous les paramètres de script et consulter un exemple de script, reportez-vous à la section Annexe : Exemple de script et description des paramètres.
Annexe : Exemple de script et description des paramètres
Les sections suivantes décrivent les paramètres de script du lecteur (Reader) et de l'outil d'écriture (Writer) pour les tâches de synchronisation par lots configurées dans l'éditeur de code. Pour connaître les exigences relatives au format du script, consultez la rubrique Configurer une tâche dans l'éditeur de code.
Exemple de script du lecteur
Tous les exemples de lecteur utilisent "stepType": "saphana" pour identifier le plug-in SAP HANA.
Table unique dans une base de données unique
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "saphana",
"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"
}
]
}
}
Tables fragmentées
Le fractionnement permet au lecteur SAP HANA de lire les données provenant de plusieurs tables SAP HANA. Toutes les tables fragmentées doivent partager le même schéma.
{
"type": "job",
"version": "1.0",
"configuration": {
"reader": {
"plugin": "saphana",
"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 script du lecteur
| Paramètre | Description | Obligatoire | Valeur par défaut |
|---|---|---|---|
username |
Nom d'utilisateur de la base de données SAP HANA. | Oui | Aucune |
password |
Mot de passe de la base de données SAP HANA. | Oui | Aucune |
column |
Colonnes à synchroniser. Utilisez * pour synchroniser toutes les colonnes. Si un nom de colonne contient une barre oblique (/), placez-le entre guillemets doubles et échappez les guillemets avec des barres obliques inverses. Par exemple, pour une colonne nommée /abc/efg, définissez la valeur sur \\"/abc/efg\\". |
Oui | Aucune |
table |
Nom de la table à synchroniser. Spécifiez la valeur sous forme de tableau, même pour une seule table. | Oui | Aucune |
jdbcUrl |
URL Java Database Connectivity (JDBC) de la base de données SAP HANA. Exemple : jdbc:sap://127.0.0.1:30215?currentschema=TEST. Des paramètres de connexion JDBC supplémentaires, tels que socketTimeout, peuvent être ajoutés, par exemple : jdbc:sap://127.0.0.1:30215?currentschema=TEST&socketTimeout=60000. |
Oui | Aucune |
splitPk |
Colonne entière numérique utilisée comme clé de fractionnement pour la synchronisation simultanée. Si aucune colonne de ce type n'existe, laissez ce champ vide. | Non | Aucune |
Exemple de script de l'outil d'écriture
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "saphana",
"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 du script 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 configuré dans l'éditeur de code. | Oui | Aucune |
table |
Nom de la table de destination. | Oui | Aucune |
column |
Colonnes de destination vers lesquelles écrire les données, spécifiées sous forme de tableau. Exemple : ["id", "name", "age"]. Utilisez ["*"] pour écrire dans toutes les colonnes dans l'ordre. Si un nom de colonne contient une barre oblique (/), placez-le entre guillemets doubles et échappez les guillemets avec des barres obliques inverses. Par exemple, pour une colonne nommée /abc/efg, définissez la valeur sur \\"/abc/efg\\". |
Oui | Aucune |
preSql |
Instruction SQL à exécuter avant le démarrage de la tâche de synchronisation. Utilisez cette option pour effacer les anciennes données avant le chargement. Exemple : truncate table tablename. Dans l'interface utilisateur sans code, une seule instruction est prise en charge. Dans l'éditeur de code, plusieurs instructions sont prises en charge, mais l'atomicité des transactions n'est pas prise en charge. |
Non | Aucune |
postSql |
Instruction SQL à exécuter une fois la tâche de synchronisation terminée. Dans l'interface utilisateur sans code, une seule instruction est prise en charge. Dans l'éditeur de code, plusieurs instructions sont prises en charge. Exemple : ALTER TABLE tablename ADD colname TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP. |
Non | Aucune |
batchSize |
Nombre d'enregistrements validés en un seul lot. Une valeur plus élevée réduit les allers-retours réseau et améliore le débit, mais une valeur trop élevée peut provoquer des erreurs de dépassement de mémoire (OOM). | Non | 1024 |