Automatisation MySQL avec n8n : gestion des données produit
Ce workflow n8n a pour objectif d'automatiser la gestion des données produit à partir de différentes sources de données. Dans un contexte où les entreprises doivent gérer efficacement leurs informations produits pour optimiser leur chaîne d'approvisionnement, ce workflow permet de centraliser et de traiter ces données de manière fluide. Par exemple, une entreprise de e-commerce peut l'utiliser pour synchroniser ses informations de produit entre sa base de données MySQL et d'autres systèmes, garantissant ainsi une mise à jour en temps réel des informations affichées sur son site web.
- Étape 1 : le workflow commence par un déclencheur Webhook qui reçoit des données d'entrée.
- Étape 2 : les données sont ensuite récupérées via une requête MySQL pour extraire les informations pertinentes sur les produits.
- Étape 3 : une requête HTTP est effectuée pour obtenir la configuration d'impression nécessaire.
- Étape 4 : les données sont également récupérées d'une base de données Postgres pour enrichir les informations produit.
- Étape 5 : un traitement des données est effectué à l'aide d'une fonction personnalisée pour formater les résultats. Enfin,
- Étape 6 : les données sont fusionnées pour créer un ensemble cohérent d'informations produit. Cette automatisation n8n permet de réduire le temps consacré à la gestion manuelle des données, d'améliorer la précision des informations et d'augmenter l'efficacité opérationnelle des équipes. En intégrant ce workflow, les entreprises peuvent se concentrer sur des tâches à plus forte valeur ajoutée tout en minimisant les erreurs humaines.
Workflow n8n MySQL, gestion des données : vue d'ensemble
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Workflow n8n MySQL, gestion des données : détail des nœuds
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"nodes": [
{
"name": "emitirEtiqueta",
"type": "n8n-nodes-base.webhook",
"position": [
440,
1290
],
"webhookId": "4431a14c-62c6-4602-8e20-e661f1d3d706",
"parameters": {
"path": "emitirEtiqueta",
"options": {},
"httpMethod": "POST",
"responseData": "allEntries",
"responseMode": "lastNode"
},
"typeVersion": 1
},
{
"name": "dadosProduto",
"type": "n8n-nodes-base.mySql",
"position": [
1270,
1440
],
"parameters": {
"query": "=-- CONSULTA DO PRODUTO GRADE\nWITH pg as (\n\tSELECT\n\t\tid,\n\t\tid_produto,\n\t\tid_gradex,\n\t\tid_gradey,\n\t\tcodigo \n\tFROM\n\t\tproduto_grade \n\tWHERE\n\t\tid = '{{$node[\"emitirEtiqueta\"].json[\"body\"][\"id_produto_grade\"]}}'\n),\n\n-- CONSULTA DO PRODUTO\np as (\n\tSELECT * FROM produto \n\tWHERE id IN ( SELECT id_produto FROM pg)\n\tAND situacao = 'ATIVO'\n),\n\n-- CONSULTA TECIDO\nt as (\n\tSELECT\n\t\ttoken,\n\t\t JSON_UNQUOTE(json_extract( objeto, '$.largura')) AS largura\n\tFROM\n\t\t`{{$node[\"PegarConfiguracaoImpressao\"].json[\"params\"][\"bancoRelatorio\"]}}`.`i_objeto` \n\tWHERE\n\t\tmodulo = 'produto_grade_tecido'\n\t\tand token in (select id from pg)\n\t\tand situacao = 'ATIVO'\n),\n\n\n-- CONSULTA COMPOSICAO\ncp as (\n\t\n\tSELECT\n\t token,\n group_concat(concat(cps.participacao,'% ',cps.descricao)) as composicao\n\tFROM\n\t\t`{{$node[\"PegarConfiguracaoImpressao\"].json[\"params\"][\"bancoRelatorio\"]}}`.`i_objeto`,\n\t\tJSON_TABLE (\n\t\t\t\t\t\t\t\t\tobjeto,\n\t\t\t\t\t\t\t\t\t\t\t'$[*]' COLUMNS ( \n\t\t\t\t\t\t\t\t\t\t\t\t\tparticipacao INT path '$.participacao',\n\t\t\t\t\t\t\t\t\t\t\t\t\tdescricao TEXT path '$.descricao'\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) AS cps \n\t\tWHERE modulo = 'produto_grade_tecido_composicao'\n\t\tAND token in (select id from pg)\n\t\tAND situacao = 'ATIVO'\n\t\tAND cps.participacao > 0\n\t\tGROUP BY token\n\t\tORDER BY participacao desc\n\t\t\n)\n\n\n-- CONSULTA RELATORIO\nSELECT\n{{$node[\"emitirEtiqueta\"].json[\"body\"][\"id_movimentacao_detalhe\"]}} as id_movimentacao_detalhe ,\n pg.id, \n\tpg.codigo,\n\tp.descricao,\n\tm.nome as marca,\n\tgx.nome as gradex,\n\tgy.nome as gradey,\n\tcurdate() as data_entrada,\n t.largura,\n\tcp.composicao\nFROM\n\tpg inner join p on (p.id = pg.id_produto)\n\tinner join marca m on(m.id = p.id_marca)\n\tleft join grade gx on (gx.id = pg.id_gradex)\n\tleft join grade gy on (gy.id = pg.id_gradey)\n\tleft join t on (t.token = pg.id)\n\tleft join cp on (cp.token = pg.id)",
"operation": "executeQuery"
},
"credentials": {
"mySql": {
"id": "2",
"name": "illi"
}
},
"typeVersion": 1
},
{
"name": "PegarConfiguracaoImpressao",
"type": "n8n-nodes-base.httpRequest",
"position": [
730,
1290
],
"parameters": {
"url": "http://localhost:1337/parse/config",
"options": {},
"jsonParameters": true,
"headerParametersJson": "{\"X-Parse-Application-Id\": \"iwms\"}"
},
"typeVersion": 1
},
{
"name": "dadosRolo",
"type": "n8n-nodes-base.postgres",
"position": [
1260,
1220
],
"parameters": {
"query": "=select * from \"tecido_rolo\"\nwhere \"objectId\" in ('{{$json[\"idRolos\"].join(\"','\")}}')",
"operation": "executeQuery",
"additionalFields": {}
},
"credentials": {
"postgres": {
"id": "1",
"name": "Postgres account"
}
},
"typeVersion": 1
},
{
"name": "trataRetorno",
"type": "n8n-nodes-base.function",
"position": [
1010,
1220
],
"parameters": {
"functionCode": "// Code here will run only once, no matter how many input items there are.\n// More info and help: https://docs.n8n.io/nodes/n8n-nodes-base.function\n\n\n// var produto = items[0].json;\n\n\nvar rolos = $node[\"emitirEtiqueta\"].json[\"body\"][\"rolos\"];\n\n\nvar idRolos = rolos.map(\n function(rolo){\n return rolo.objectId\n });\n \nvar retorno = [];\n\nretorno.push({json:{\n // produto:produto,\n idRolos:idRolos \n}})\n\nreturn retorno;"
},
"typeVersion": 1
},
{
"name": "roloProduto",
"type": "n8n-nodes-base.merge",
"position": [
1640,
1330
],
"parameters": {
"mode": "mergeByKey",
"propertyName1": "id_movimentacao_detalhe",
"propertyName2": "id_movimentacao_detalhe"
},
"typeVersion": 1
}
],
"connections": {
"dadosRolo": {
"main": [
[
{
"node": "roloProduto",
"type": "main",
"index": 0
}
]
]
},
"dadosProduto": {
"main": [
[
{
"node": "roloProduto",
"type": "main",
"index": 1
}
]
]
},
"trataRetorno": {
"main": [
[
{
"node": "dadosRolo",
"type": "main",
"index": 0
}
]
]
},
"emitirEtiqueta": {
"main": [
[
{
"node": "PegarConfiguracaoImpressao",
"type": "main",
"index": 0
}
]
]
},
"PegarConfiguracaoImpressao": {
"main": [
[
{
"node": "dadosProduto",
"type": "main",
"index": 0
},
{
"node": "trataRetorno",
"type": "main",
"index": 0
}
]
]
}
}
}Workflow n8n MySQL, gestion des données : pour qui est ce workflow ?
Ce workflow s'adresse aux entreprises de taille moyenne à grande, notamment celles du secteur du e-commerce et de la distribution. Les équipes techniques et les responsables de la gestion des données trouveront cet outil particulièrement utile pour automatiser la synchronisation des informations produit entre plusieurs systèmes.
Workflow n8n MySQL, gestion des données : problème résolu
Ce workflow résout le problème de la gestion manuelle des données produit, qui peut être source d'erreurs et de pertes de temps. En automatisant le processus de récupération et de traitement des informations, les entreprises peuvent éviter les incohérences dans leurs bases de données, améliorer la qualité des données et réduire le risque d'erreurs humaines. Les utilisateurs bénéficient ainsi d'une mise à jour rapide et précise des informations produits, ce qui améliore l'expérience client et optimise les opérations commerciales.
Workflow n8n MySQL, gestion des données : étapes du workflow
Étape 1 : le workflow est déclenché par un Webhook qui reçoit des données d'entrée.
- Étape 1 : les informations produit sont récupérées via une requête MySQL.
- Étape 2 : une requête HTTP est effectuée pour obtenir la configuration d'impression.
- Étape 3 : des données supplémentaires sont extraites d'une base de données Postgres.
- Étape 4 : les données sont traitées par une fonction personnalisée pour formater les résultats.
- Étape 5 : enfin, les données sont fusionnées pour créer un ensemble cohérent d'informations produit.
Workflow n8n MySQL, gestion des données : guide de personnalisation
Pour personnaliser ce workflow, vous pouvez modifier l'URL du Webhook pour l'adapter à votre système. Assurez-vous également de mettre à jour les requêtes MySQL et Postgres en fonction de votre structure de base de données. Si vous avez besoin d'ajouter d'autres sources de données, vous pouvez intégrer des noeuds supplémentaires pour les récupérer. Pensez à sécuriser votre flux en configurant les paramètres d'authentification pour les requêtes HTTP. Enfin, vous pouvez monitorer le flux en ajoutant des noeuds de log pour suivre les erreurs éventuelles.