Exporter et importer des données

Dans Odoo, il est parfois nécessaire d’exporter ou d’importer des données pour exécuter des rapports ou pour modifier des données. Ce document traite de l’exportation et de l’importation de données dans et hors d’Odoo.

Important

Parfois, les utilisateurs rencontrent une erreur de « TimeOut » -dépassement de temps- ou une écriture d’enregistrement ne se termine pas en raison de sa taille. Cela peut se produire lors de grands exports ou dans les cas où le fichier d’importation est trop volumineux. Pour contourner cette limitation liée à la taille des enregistrements, traitez les exports ou imports par lots de plus petite taille.

Exporter des données depuis Odoo

Lorsqu’on travaille avec une base de données, il est parfois nécessaire d’exporter des données dans un fichier distinct. Cela peut faciliter le reporting des activités, bien qu’Odoo fournisse un outil de reporting précis avec chaque application disponible.

Avec Odoo, les valeurs peuvent être exportées depuis n’importe quel champ dans n’importe quel enregistrement. Pour ce faire, activer l’icône de vue liste (Liste) sur les éléments qui doivent être exportés, puis sélectionner les enregistrements qui doivent être exportés. Pour sélectionner un enregistrement, cocher la case à côté de l’enregistrement correspondant. Enfin, cliquer sur le bouton Action et sélectionner Exporter.

Vue des différentes options à activer ou sur lesquelles cliquer pour exporter des données.

Lorsqu’on clique sur Exporter, une fenêtre contextuelle Exporter les données apparaît, avec plusieurs options pour les données à exporter :

Aperçu des options à prendre en compte lors de l’exportation de données dans Odoo.
  1. Avec l’option Je souhaite mettre à jour les données (export compatible import) cochée, le système affiche uniquement les champs qui peuvent être importés. Ceci est utile dans le cas où les enregistrements existants doivent être mis à jour. Cela fonctionne comme un filtre. Laisser la case décochée donne beaucoup plus d’options de champs car elle affiche tous les champs, pas seulement ceux qui peuvent être importés.

  2. Lors de l’exportation, il est possible d’exporter dans deux formats : .csv et .xls. Avec .csv, les éléments sont séparés par une virgule, tandis que .xls contient des informations sur toutes les feuilles de calcul d’un fichier, y compris le contenu et la mise en forme.

  3. Ce sont les éléments qui peuvent être exportés. Utiliser l’icône (Afficher les sous-champs) pour afficher plus d’options de sous-champs. Utiliser la barre Rechercher pour trouver des champs spécifiques. Pour utiliser l’option Rechercher plus efficacement, cliquer sur toutes les icônes (Afficher les sous-champs) pour afficher tous les champs.

  4. Le bouton icône (Sélectionner le champ) est présent pour ajouter des champs à la liste Champs à exporter.

  5. L’icône (Trier) à gauche des champs sélectionnés peut être utilisée pour déplacer les champs vers le haut et vers le bas, afin de modifier l’ordre dans lequel ils sont affichés dans le fichier exporté. Glisser-déposer en utilisant l’icône (Trier).

  6. L’icône (Supprimer le champ) est utilisée pour supprimer des champs. Cliquer sur l’icône (Supprimer le champ) pour supprimer le champ.

  7. Pour les rapports récurrents, il est utile d’enregistrer des préréglages d’export. Sélectionnez tous les champs nécessaires et cliquez sur le menu déroulant des modèles. Une fois là, cliquez sur Nouveau modèle et donnez un nom unique au modèle d’export. Cliquez sur l’icône (disquette) pour enregistrer la configuration. La prochaine fois que la même liste devra être exportée, sélectionnez le modèle correspondant précédemment enregistré dans le menu déroulant.

Astuce

Il est utile de connaître l’identifiant externe d’un champ. Par exemple, Société liée dans l’interface d’exportation des utilisateurs correspond à parent_id (identifiant externe). Cela est utile, car seules les données qui doivent être modifiées et réimportées sont alors exportées.

Importer des données dans Odoo

L’importation de données dans Odoo est extrêmement utile lors de la mise en œuvre ou lorsque des données doivent être mises à jour en masse. La documentation suivante explique comment importer des données dans une base de données Odoo.

Avertissement

Les imports sont définitifs et ne peuvent pas être annulés. Cependant, il est possible d’utiliser des filtres (créé le ou dernière modification) pour identifier les enregistrements modifiés ou créés par l’import.

Astuce

L’activation du mode développeur modifie les paramètres d’import visibles dans le menu de gauche. Cela fait apparaître un menu Avancé. Deux options y sont incluses : Suivre l’historique lors de l’import et Autoriser la correspondance avec les sous-champs.

Options d’importation avancées lorsque le mode développeur est activé.

Si le modèle utilise openchatter, l’option Suivre l’historique lors de l’import configure les abonnements et envoie des notifications lors de l’import, mais entraîne un import plus lent.

Si l’option Autoriser la correspondance avec les sous-champs est sélectionnée, tous les sous-champs d’un champ sont utilisés pour effectuer la correspondance sous Champ Odoo lors de l’import.

Les prémices

Les données peuvent être importées sur n’importe quel objet métier Odoo à l’aide des formats Excel (.xlsx) ou CSV (.csv). Cela inclut : contacts, produits, relevés bancaires, écritures comptables et commandes.

Ouvrir la vue de l’objet vers lequel les données doivent être importées/renseignées, cliquer sur l’icône (Action) et dans le menu déroulant sélectionner (Importer des enregistrements).

Menu Action affiché avec l’option Importer des enregistrements mise en évidence.

Cliquer sur Importer un modèle pour les clients au centre de la page pour télécharger un modèle et le renseigner avec les propres données de l’entreprise. De tels modèles peuvent être importés en un clic puisque le mappage des données est déjà préconfiguré.

Pour charger le modèle téléchargé ou un fichier existant, suivre les étapes suivantes :

  1. Cliquez sur Uploader un fichier de données et sélectionnez le fichier souhaité.

  2. Ajustez les options de Formatage selon les besoins (pour les fichiers CSV uniquement).

  3. Assurez-vous que toutes les données de la Colonne Fichier sont correctement mappées au Champ Odoo approprié et qu’elles sont exemptes d’erreurs.

  4. (Facultatif) Cliquez sur Charger le fichier de données pour recharger le même fichier ou en uploader un autre.

  5. Cliquez sur Tester pour vérifier que les données sont valides.

  6. Cliquez sur Importer.

Note

Les options de Mise en forme n’apparaissent pas lors de l’import du type de fichier Excel propriétaire (c.-à-d. .xls ou .xlsx).

Adapter un modèle

Des modèles d’import sont fournis dans l’outil d’importation pour les données les plus courantes à importer (contacts, produits, relevés bancaires, etc.). Ouvrez-les avec n’importe quel logiciel de feuille de calcul (Microsoft Office, OpenOffice, Google Drive, etc.).

Une fois le modèle téléchargé, procédez comme suit :

  • Ajoutez, supprimez et triez les colonnes afin qu’elles correspondent au mieux à la structure des données.

  • Il est fortement conseillé de ne pas supprimer la colonne ID externe (ID) (voir pourquoi dans la section suivante).

  • Attribuez un ID unique à chaque enregistrement en faisant glisser la séquence d’ID dans la colonne ID externe (ID).

Animation montrant la souris faisant glisser la colonne ID afin que chaque enregistrement ait un ID unique.

Note

Lorsqu’une nouvelle colonne est ajoutée, il se peut qu’Odoo ne puisse pas la mapper automatiquement si son libellé ne correspond à aucun champ dans Odoo. Cependant, les nouvelles colonnes peuvent être mappées manuellement lorsque l’import est testé. Recherchez le champ correspondant dans le menu déroulant.

Menu déroulant développé dans l’écran d’import initial d’Odoo.

Ensuite, utilisez le libellé de ce champ dans le fichier d’import afin de garantir la réussite des imports futurs.

Astuce

Un autre moyen utile de déterminer les noms de colonnes appropriés à importer est d’exporter un fichier exemple utilisant les champs à importer. De cette manière, s’il n’existe pas de modèle d’import exemple, les noms sont exacts.

Importer à partir d’une autre application

L”ID externe (ID) est un identifiant unique pour une ligne d’élément. Il est possible d’utiliser un ID externe (ID) provenant d’un logiciel précédent pour faciliter la transition vers Odoo.

La définition d’un ID n’est pas obligatoire lors de l’importation, mais elle est utile dans de nombreux cas :

Pour recréer des relations entre différents enregistrements, l’identifiant unique de l’application d’origine doit être utilisé pour le mapper à la colonne ID externe (ID) dans Odoo.

Lorsque vous importez un autre enregistrement qui se lie au premier, utilisez XXX/ID (XXX/ID externe) pour l’identifiant unique original. Cet enregistrement peut également être retrouvé à l’aide de son nom.

Avertissement

Il convient de noter que des conflits surviennent lorsque deux (ou plusieurs) enregistrements ont le même ID externe.

Champ manquant pour mapper une colonne

Odoo essaie de déterminer de manière heuristique le type de champ pour chaque colonne du fichier importé, en se basant sur les dix premières lignes du fichier.

Par exemple, s’il y a une colonne ne contenant que des nombres, seuls les champs de type entier sont proposés comme options.

Bien que ce comportement soit utile dans la plupart des cas, il est également possible qu’il échoue ou que la colonne soit mappée à un champ qui n’est pas proposé par défaut.

Si cela se produit, cochez l’option Afficher les champs de relation (avancés), puis une liste complète de champs devient disponible pour chaque colonne.

Recherche du champ correspondant à la colonne de taxe.

Modifier le format d’import des données

Note

Odoo peut détecter automatiquement si une colonne est une date et tente de deviner le format de date à partir d’un ensemble de formats parmi les plus courants. Bien que ce processus fonctionne pour de nombreux formats de date, certains formats ne sont pas reconnaissables. Cela peut provoquer de la confusion en raison des inversions jour-mois : il est difficile de deviner quelle partie de la date correspond au jour et quelle partie correspond au mois dans une date telle que 01-03-2016.

Lors de l’import d’un fichier CSV, Odoo propose des options de Mise en forme.

Pour voir quel format de date Odoo a détecté dans le fichier, vérifiez le Format de date affiché lorsque vous cliquez sur les options sous le sélecteur de fichier. Si ce format est incorrect, modifiez-le pour utiliser le format souhaité en utilisant la norme ISO 8601 pour définir le format.

Important

ISO 8601 est une norme internationale couvrant l’échange mondial ainsi que la communication de données relatives aux dates et heures. Par exemple, le format de date devrait être AAAA-MM-JJ. Dans le cas du 24 juillet 1981, il devrait être écrit 1981-07-24.

Astuce

Lors de l’import de fichiers Excel (.xls, .xlsx), pensez à utiliser des cellules de type date pour stocker les dates. Cela permet de conserver les formats de date locaux à l’affichage, quelle que soit la manière dont la date est formatée dans Odoo. Lors de l’import d’un fichier CSV, utilisez la section Mise en forme d’Odoo pour sélectionner le format des dates dans les colonnes à importer.

Importer des nombres avec des signes monétaires

Odoo prend entièrement en charge les nombres entre parenthèses pour représenter des valeurs négatives, ainsi que les nombres accompagnés d’un symbole monétaire. Odoo détecte également automatiquement quel séparateur de milliers/décimal est utilisé. Si un symbole monétaire inconnu d’Odoo est utilisé, il se peut qu’il ne soit pas reconnu comme un nombre et que l’import échoue.

Note

Lors de l’import d’un fichier CSV, le menu Mise en forme apparaît dans la colonne de gauche. Dans ces options, le Séparateur de milliers peut être modifié.

Exemples de nombres pris en charge (en utilisant « trente-deux mille » comme valeur) :

  • 32.000,00

  • 32000,00

  • 32,000.00

  • -32000.00

  • (32000.00)

  • $ 32.000,00

  • (32000.00 €)

Exemple de ce qui ne fonctionne pas :

  • ABC 32.000,00

  • $ (32.000,00)

Important

Des () (parenthèses) autour du nombre indiquent que le nombre est une valeur négative. Le symbole monétaire doit être placé à l’intérieur des parenthèses pour qu’Odoo le reconnaisse comme une valeur monétaire négative.

Le tableau d’aperçu de l’import ne s’affiche pas correctement

Par défaut, l’aperçu de l’import utilise la virgule comme séparateur de champs et les guillemets comme délimiteur de texte. Si le fichier CSV n’utilise pas ces paramètres, modifiez les options de Mise en forme (affichées sous la barre Importer un fichier CSV après la sélection du fichier CSV).

Important

Si le fichier CSV utilise la tabulation comme séparateur, Odoo ne détecte pas les séparations. Les options de format du fichier doivent être modifiées dans le logiciel de feuille de calcul. Consultez la section suivante Modifier le format d’un fichier CSV.

Modifier le format d’un fichier CSV dans un logiciel de feuille de calcul

Lors de l’édition et de l’enregistrement de fichiers CSV dans des logiciels de feuille de calcul, les paramètres régionaux de l’ordinateur sont appliqués pour le séparateur et le délimiteur. Odoo recommande d’utiliser OpenOffice ou LibreOffice, car ces deux applications permettent de modifier les trois options (depuis l’application LibreOffice, allez dans Boîte de dialogue « Enregistrer sous » ‣ Cochez la case « Modifier les paramètres du filtre » ‣ Enregistrer).

Microsoft Excel permet de modifier l’encodage lors de l’enregistrement (dans Boîte de dialogue « Enregistrer sous » ‣ Menu déroulant « Outils » ‣ Onglet « Encodage »).

Différence entre l’ID de base de données et l’ID externe

Certains champs définissent une relation avec un autre objet. Par exemple, le pays d’un contact est un lien vers un enregistrement de l’objet « Pays ». Lorsqu’un tel champ est importé, Odoo doit recréer les liens entre les différents enregistrements. Pour faciliter l’import de tels champs, Odoo fournit trois mécanismes.

Important

Un seul mécanisme doit être utilisé par champ importé.

Par exemple, pour référencer le pays d’un contact, Odoo propose trois champs différents à importer :

  • Pays : le nom ou le code du pays

  • Pays/ID de base de données : l’ID Odoo unique de l’enregistrement, défini par la colonne ID dans PostgreSQL

  • Pays/ID externe : l’ID de cet enregistrement référencé dans une autre application (ou le fichier .XML qui l’a importé)

Pour le pays Belgique, par exemple, vous pouvez utiliser l’une des trois méthodes suivantes :

  • Pays : Belgique

  • Pays/ID de base de données : 21

  • Pays/ID externe : base.be

Selon les besoins de l’entreprise, utilisez l’une de ces trois méthodes pour référencer les enregistrements dans les relations. Voici un exemple indiquant quand utiliser l’une ou l’autre, en fonction du besoin :

  • Utilisez Pays : c’est la méthode la plus simple lorsque les données proviennent de fichiers CSV créés manuellement.

  • Utilisez Pays/ID de base de données : cette méthode devrait être employée rarement. Elle est principalement utilisée par les développeurs, car son principal avantage est d’éviter tout conflit (plusieurs enregistrements peuvent avoir le même nom, mais ils disposent toujours d’un ID de base de données unique)

  • Utilisez Pays/ID externe : utilisez l’ID externe lors de l’import de données provenant d’une application tierce.

Lorsque des ID externes sont utilisés, importez les fichiers CSV avec la colonne ID externe (ID) définissant l’ID externe de chaque enregistrement importé. Vous pouvez ensuite faire référence à cet enregistrement avec des colonnes telles que Champ/ID externe. Les deux fichiers CSV suivants fournissent un exemple pour les produits et leurs catégories.

Importer des champs de relation

Un objet Odoo est toujours lié à de nombreux autres objets (par exemple, un produit est lié à des catégories de produits, des attributs, des fournisseurs, etc.). Pour importer ces relations, les enregistrements de l’objet lié doivent d’abord être importés depuis leur propre menu de liste.

Cela peut être réalisé en utilisant soit le nom de l’enregistrement lié, soit son ID, selon les circonstances. L’ID est requis lorsque deux enregistrements portent le même nom. Dans ce cas, ajoutez /ID à la fin du titre de la colonne (par exemple, pour les attributs de produits : Attributs de produits / Attribut / ID).

Options pour les correspondances multiples des champs

Si, par exemple, il existe deux catégories de produits ayant le sous-nom Vendable (par ex. Produits divers/Vendable et Autres produits/Vendable), la validation est interrompue, mais les données peuvent tout de même être importées. Cependant, Odoo recommande de ne pas importer ces données, car elles seront toutes liées à la première catégorie Vendable trouvée dans la liste Catégorie de produits (Produits divers/Vendable). Odoo recommande plutôt de modifier l’une des valeurs du doublon ou la hiérarchie des catégories de produits.

Cependant, si l’entreprise ne souhaite pas modifier la configuration des catégories de produits, Odoo recommande d’utiliser l’ID externe pour ce champ, « Catégorie ».

Importer des champs de relation many2many

Les étiquettes doivent être séparées par une virgule, sans espace. Par exemple, si un client doit être lié aux deux étiquettes Fabricant et Détaillant, alors Fabricant,Détaillant doit être encodé dans la même colonne du fichier CSV.

Importer des relations one2many

Si une entreprise souhaite importer un bon de commande avec plusieurs lignes de commande, une ligne spécifique doit être réservée dans le fichier CSV pour chaque ligne de commande. La première ligne de commande est importée sur la même ligne que les informations relatives au bon de commande. Toute ligne supplémentaire doit être ajoutée sur une ligne distincte qui ne contient aucune information dans les champs relatifs au bon de commande.

Example

Une entreprise importe des devis en utilisant un fichier CSV, basé sur des données de démonstration :

Une entreprise importe des bons de commande avec leurs lignes de bon de commande respectives en utilisant un fichier CSV :

Une entreprise importe des clients et leurs contacts respectifs en utilisant un fichier CSV :

Importer des fichiers image

Pour importer des fichiers image en même temps que le fichier CSV ou Excel uploadé, suivez les étapes suivantes :

  1. Ajoutez les noms des fichiers image dans la colonne Image correspondante du fichier de données.

  2. Uploadez le fichier de données ou rechargez-le en cliquant sur Charger le fichier de données.

  3. Cliquez sur Uploader vos fichiers dans la section Fichiers à importer.

  4. Sélectionnez les fichiers image pertinents. Le nombre de fichiers sélectionnés apparaît à côté du bouton.

  5. Cliquez sur Tester pour vérifier que toutes les données sont valides.

  6. Cliquez sur Importer. Pendant le processus d’import, Odoo effectue une vérification afin de lier automatiquement les images uploadées au fichier de données importé. S’il n’y a pas de correspondance, le fichier de données est importé sans aucune image.

Note

  • La section Fichiers à importer est activée si le modèle de produit possède une colonne Image avec tous les champs renseignés.

  • Les noms des fichiers image dans le fichier de données doivent correspondre aux fichiers image uploadés.

  • Lors de l’import d’un grand nombre d’images, spécifier la taille maximale de lot en mégaoctets et définir un délai pour éviter que le système ne soit surchargé. Pour ce faire, activer le mode développeur et renseigner les champs Taille max. par lot et Délai après chaque lot dans la section Fichiers à importer. Par défaut, le délai respecte la limite d’appels RPC/API définie dans la Politique d’utilisation acceptable d’Odoo Cloud.

Importer des enregistrements plusieurs fois

Si un fichier importé contient l’une des colonnes ID externe ou ID de base de données, les enregistrements qui ont déjà été importés sont modifiés au lieu d’être créés. Ceci est extrêmement utile, car cela permet aux utilisateurs d’importer le même fichier CSV plusieurs fois, après avoir effectué quelques modifications entre deux imports.

Odoo se charge de créer ou de modifier chaque enregistrement, en fonction du fait qu’il soit nouveau ou non.

Cette fonctionnalité permet à une entreprise d’utiliser l’outil Importer/Exporter d’Odoo pour modifier un lot d’enregistrements dans un logiciel de feuille de calcul.

Valeur non fournie pour un champ spécifique

Si tous les champs ne sont pas définis dans le fichier CSV, Odoo attribue la valeur par défaut pour chaque champ non défini. Cependant, si les champs sont définis avec des valeurs vides dans le fichier CSV, Odoo définit la valeur vide dans le champ au lieu d’attribuer la valeur par défaut.

Exporter/importer différentes tables depuis une application SQL vers Odoo

Si des données doivent être importées depuis différentes tables, il faut recréer les relations entre les enregistrements appartenant à ces différentes tables. Par exemple, si des sociétés et des personnes sont importées, le lien entre chaque personne et la société pour laquelle elle travaille doit être recréé.

Pour gérer les relations entre les tables, utilisez les fonctionnalités d’ID externe d’Odoo. L’ID externe d’un enregistrement est l’identifiant unique de cet enregistrement dans une autre application. L’ID externe doit être unique pour tous les enregistrements de tous les objets. Il est recommandé de préfixer cet ID externe avec le nom de l’application ou de la table (par ex. “company_1”, “person_1” au lieu de “1”)

Par exemple, supposons qu’il existe une base de données SQL avec deux tables à importer : sociétés et personnes. Chaque personne appartient à une société, de sorte que le lien entre une personne et la société pour laquelle elle travaille doit être recréé.

Testez cet exemple avec un échantillon de base de données PostgreSQL.

Commencez par exporter toutes les sociétés et leur ID externe. Dans PSQL, écrivez la commande suivante :

> copy (select 'company_'||id as "External ID",company_name as "Name",'True' as "Is a Company" from companies) TO '/tmp/company.csv' with CSV HEADER;

Cette commande SQL crée le fichier CSV suivant :

External ID,Name,Is a Company
company_1,Bigees,True
company_2,Organi,True
company_3,Boum,True

Pour créer le fichier CSV pour les personnes liées aux sociétés, utilisez la commande SQL suivante dans PSQL :

> copy (select 'person_'||id as "External ID",person_name as "Name",'False' as "Is a Company",'company_'||company_id as "Related Company/External ID" from persons) TO '/tmp/person.csv' with CSV

Elle produit le fichier CSV suivant :

External ID,Name,Is a Company,Related Company/External ID
person_1,Fabien,False,company_1
person_2,Laurence,False,company_1
person_3,Eric,False,company_2
person_4,Ramsy,False,company_3

Dans ce fichier, Fabien et Laurence travaillent pour la société Bigees (company_1), et Eric travaille pour la société Organi. La relation entre les personnes et les sociétés est établie en utilisant l’ID externe des sociétés. L’ID externe est préfixé par le nom de la table afin d’éviter un conflit d’ID entre les personnes et les sociétés (person_1 et company_1, qui partageaient le même ID 1 dans la base de données d’origine).

Les deux fichiers produits sont prêts à être importés dans Odoo sans aucune modification. Après avoir importé ces deux fichiers CSV, il y a quatre contacts et trois sociétés (les deux premiers contacts sont liés à la première société). Gardez à l’esprit qu’il faut d’abord importer les sociétés, puis les personnes.

Mettre à jour des données dans Odoo

Les données existantes peuvent être mises à jour en masse via un import de données, tant que l””ID externe reste cohérent.

Préparer l’export des données

Pour mettre à jour des données via un import, naviguer d’abord vers les données à mettre à jour et sélectionner l’icône (Liste) pour activer la vue liste. Sur le côté gauche de la liste, cocher la case pour tout enregistrement à mettre à jour. Ensuite, cliquer sur le bouton Actions et sélectionner Exporter dans le menu déroulant.

Dans la fenêtre contextuelle Exporter des données, cochez la case Je veux mettre à jour des données (export compatible avec l’import). Cela inclut automatiquement l’ID externe dans l’export. De plus, la liste Champs à exporter est uniquement limitée aux champs pouvant être importés.

Note

Le champ ID externe n’apparaît pas dans la liste Champs à exporter, sauf s’il est ajouté manuellement, mais il est tout de même inclus dans l’export. Cependant, si la case Je veux mettre à jour des données (export compatible avec l’import) est cochée, il est inclus dans l’export.

Sélectionnez les champs à inclure dans l’export à l’aide des options de la fenêtre contextuelle, puis cliquez sur Exporter.

Importer les données mises à jour

Après l’export, apportez toutes les modifications nécessaires au fichier de données. Lorsque le fichier est prêt, il peut être importé en suivant la même procédure qu’un import de données normal.

Danger

Lors de la mise à jour de données, il est extrêmement important que l’ID externe reste cohérent, car c’est ainsi que le système identifie un enregistrement. Si un ID est modifié ou supprimé, le système peut ajouter un enregistrement en double au lieu de mettre à jour l’enregistrement existant.