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

When working with a database, it is sometimes necessary to export data in a distinct file. Doing so can aid in reporting on activities, although, Odoo provides a precise reporting tool with each available application.

With Odoo, the values can be exported from any field in any record. To do so, activate the list view (List) icon, on the items that need to be exported, and then select the records that should be exported. To select a record, tick the checkbox next to the corresponding record. Finally, click the Action button, and select (Export).

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

When clicking on Export, a Export Data pop-over window appears, with several options for the data to export:

Overview of options to consider when exporting data in Odoo..
  1. With the I want to update data (import-compatable export) option ticked, the system only shows the fields that can be imported. This is helpful in the case where the existing records need to be updated. This works like a filter. Leaving the box unticked, gives many more field options because it shows all the fields, not only the ones that can be imported.

  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. These are the items that can be exported. Use the (Show sub-fields) icon to display more sub-field options. Use the Search bar to find specific fields. To use the Search option more efficiently, click on all the (Show sub-fields) icon to display all fields.

  4. The (Select field) icon button is present to add fields to the Fields to export list.

  5. The (Sort) icon to the left of the selected fields can be used to move the fields up and down, to change the order in which they are displayed in the exported file. Drag-and-drop using the (Sort) icon.

  6. The (Remove field) icon is used to remove fields. Click the (Remove field) icon to remove the field.

  7. For recurring reports, it is helpful to save export presets. Select all the needed fields, and click on the template drop-down menu. Once there, click on New template, and give a unique name to the export template. Click the (floppy drive) icon to save the configuration. The next time the same list needs to be exported, select the related template that was previously saved from the drop-down menu.

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.

Open the view of the object to which the data should be imported/populated, click on (Action) icon, and in the drop-down menu select (Import records).

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

After clicking Import records, Odoo reveals a separate page with templates that can be downloaded and populated with the company’s own data. Such templates can be imported in one click, since the data mapping is already done. To download a template click Import Template for Customers at the center of the page.

Important

When importing a CSV file, Odoo provides Formatting options. These options do not appear when importing the proprietary Excel file type (.xls, .xlsx).

Formatting options presented when a CVS file is imported in Odoo.

Make necessary adjustments to the Formatting options, and ensure all columns in the Odoo field and File Column are free of errors. Finally, click Import to import the data.

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

Another useful way to find out the proper column names to import is to export a sample file using the fields to be imported. This way, if there is not a sample import template, the names are accurate.

Importer à partir d’une autre application

The External ID (ID) is a unique identifier for a line item. It is possible to use an External ID (ID) from previous software to facilitate the transition to 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 is an international standard, covering the worldwide exchange, along with the communication of date and time-related data. For example, the date format should be YYYY-MM-DD. In the case of July 24th 1981, it should be written as 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

A company imports quotations using a CSV file, based on demo data:

A company imports purchase orders with their respective purchase order lines using a CSV file:

A company imports customers and their respective contacts using a CSV file:

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

If all fields are not set in the CSV file, Odoo assigns the default value for every non-defined field. However, if fields are set with empty values in the CSV file, Odoo sets the empty value in the field, instead of assigning the default value.

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

To update data through an import, first navigate to the data to be updated, and select the (List) icon to activate list view. On the far-left side of the list, tick the checkbox for any record to be updated. Then, click Actions button, and select (Export) from the drop-down menu.

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.

Select the required fields to be included in the export using the options on the pop-up window, then click Export.

Importer les données mises à jour

After exporting, make any necessary changes to the data file. When the file is ready, it can be imported by following the same process as a normal data import.

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.