Objectif et prérequis
Actualisez un produit existant par sa clé sku et ajoutez un produit manquant à une table SQL pédagogique.
Cet exemple utilise des données et paramètres de démonstration. Validez le résultat attendu dans votre propre environnement avant de connecter des destinations de production. Les identifiants demo_* sont illustratifs : sélectionnez vos propres connexions ou sources pédagogiques dans l’éditeur. Le JSON ci-dessous présente la structure des blocs et connexions, pas une archive de flux prête à transférer.
Une connexion à une base SQL pédagogique avec un connecteur pris en charge et des droits de lecture/écriture sur demo_products est nécessaire. L’exemple lui-même n’effectue pas d’écriture SQL.
Données d’entrée pédagogiques
État initial de demo_products :
| sku | name | price |
|---|---|---|
| T01 | Tea | 10 |
| C01 | Coffee | 20 |
products.csv
sku;name;price
T01;Tea premium;12.5
J01;Juice;8
Blocs, connexions et paramètres exacts
Topologie de l’exemple 14 : 3 blocs, 2 connexions. Les identifiants de nœuds et les ports du graphe configuré sont conservés.
Ajoutez les blocs listés dans le concepteur, ouvrez les propriétés de chacun et définissez ces valeurs. Les noms demo_* désignent les sources et connexions pédagogiques.
| Bloc | Paramètre |
|---|---|
| 1 Fichier src |
|
| 2 Formats des nombres et des dates cast |
|
| 3 Connexion sql |
|
Connexions des ports
- src
out→ castin - cast
out→ sqlin
Configuration complète du graphe en JSON
{
"version": 3,
"nodes": [
{
"id": "src",
"type": "file",
"label": "src",
"config": {
"role": "source",
"source_id": "demo_products_upsert",
"options": {
"sheet": "CSV",
"range": "A1:C3",
"header": true,
"delimiter": ";"
}
}
},
{
"id": "cast",
"type": "number_format",
"label": "cast",
"config": {
"rules": [
{
"kind": "number",
"field": "price",
"decimal_in": ".",
"thousands_in": "",
"extract": false,
"invalid": "error",
"output": "number"
}
]
}
},
{
"id": "sql",
"type": "connection",
"label": "sql",
"config": {
"role": "target",
"connection_id": "demo_sql",
"external": {
"object": "demo_products",
"write_mode": "upsert",
"key_fields": [
"sku"
]
}
}
}
],
"edges": [
{
"source": "src",
"target": "cast",
"source_port": "out",
"target_port": "in"
},
{
"source": "cast",
"target": "sql",
"source_port": "out",
"target_port": "in"
}
]
}Résultat attendu
| sku | name | price |
|---|---|---|
| T01 | Tea premium | 12.5 |
| C01 | Coffee | 20 |
| J01 | Juice | 8 |
T01 est actualisé, J01 est ajouté et C01 reste. La clé sku doit être unique dans la table pédagogique.
Exécuter et vérifier
- Préparez la table pédagogique demo_products et vérifiez ses 2 lignes initiales.
- Vérifiez les types des colonnes : sku/name sont du texte, price est numérique ; le bloc cast convertit le texte CSV en nombre.
- Lancez la prévalidation, puis exécutez ; lisez la table et comparez les 3 lignes illustrées.
- Répétez la même exécution : upsert par sku doit actualiser les mêmes produits sans créer de doublons.
Erreurs courantes
- insert au lieu de upsert ne mettra pas T01 à jour et peut enfreindre la clé unique.
- Corrigez les valeurs sku vides ou dupliquées du fichier d’entrée avant l’écriture.
- Ne remplacez pas la table pédagogique par une table de production sans vérifier son schéma et les droits d’écriture.