Export and import data

Export data from Odoo

When working with a database, it sometimes is necessary to export your data in a distinct file. Doing so can help to do reporting over your activities (even if Odoo offers a precise and easy reporting tool with each available application).

Avec Odoo, vous pouvez exporter les valeurs de n’importe quel champ dans n’importe quel enregistrement. Pour ce faire, activez la vue liste sur les éléments à exporter, cliquez sur Action, puis sur Exporter.

view of the different things to enable/click to export data

Pretty simple, this action still comes with some specificities. In fact, when clicking on Export, a pop-up window appears with several options for the data to export:

overview of all the options to take into account when exporting data in Odoo
  1. With the I want to update data option ticked, the system only shows the fields which can be imported. This is very helpful in case you want to update existing records. Basically, this works like a filter. Leaving the box unticked gives way more field options because it shows all the fields, not just the ones which can be imported.

  2. When exporting, you can choose between two formats: .csv and .xls. With .csv, items are separated with a comma, while .xls holds information about all the worksheets in a file, including both content and formatting.

  3. Those are the items you may want to export. Use the arrows to display more sub-field options. Of course, you can use the search bar to find specific fields more easily. To use the search option more efficiently, display all the fields by clicking on all the arrows!

  4. The + button is there to add fields to the « to export » list.

  5. The « handles » next to the selected fields allow you to move the fields up and down to change the order in which they must be displayed in the exported file.

  6. The trashcan is there if you need to remove fields.

  7. For recurring reports, it might be interesting to save export presets. Select all the needed ones and click on the template bar. There, click on New template and give a name to yours. The next time you need to export the same list, simply select the related template.

Astuce

It’s good to keep the field’s external identifier in mind. For example, Related Company is equal to parent_id. Doing so helps export only what you would like to import next.

Importer des données dans Odoo

Comment démarrer

Vous pouvez importer des données vers n’importe quel objet d’Odoo business en utilisant soit le format Excel (.xlsx) soit le format CSV (.csv) : des contacts, des produits, des relevés bancaires, des écritures comptables et même des commandes !

Open the view of the object you want to populate and click on Favorites ‣ Import records.

../../_images/import_button.png

Vous y trouverez des templates que vous pouvez facilement alimenter avec vos propres données. Ces templates peuvent être importés en un clic car la cartographie des données a déjà été faite.

Comment adapter le template

  • Ajoutez, supprimez et triez les colonnes pour qu’elles correspondent au mieux à votre structure de données.

  • Nous vous conseillons de ne pas supprimer la colonne ID (voyez pourquoi dans la section suivante).

  • Définissez un ID unique pour chaque donnée en tirant la séquence ID vers le bas.

../../_images/dragdown.gif
  • Lorsque vous ajoutez une nouvelle colonne, Odoo risque de ne pas pouvoir la cartographier automatiquement si son libellé ne correspond à aucun champ dans Odoo. Vous pouvez relier les nouvelles colonnes manuellement lorsque vous testez l’importation. Recherchez le champ correspondant dans la liste.

    ../../_images/field_list.png

    Utilisez ensuite le libellé de ce champ dans votre fichier pour qu’il fonctionne directement la prochaine fois.

Comment importer depuis une autre application

Pour recréer les relations entre les différentes données, vous devez utiliser l’identifiant unique de l’application initiale et le faire correspondre à la colonne ID (ID externe) dans Odoo. Lorsque vous importez une autre donnée qui est liée à la première donnée, utilisez XXX/ID (XXX/ID externe) pour l’identifiant unique initial. Vous pouvez également retrouver cette donnée via son nom mais vous serez bloqué si au moins deux données ont le même nom.

L’ID sera également utilisé pour mettre à jour l’importation originale si vous devez importer des données modifiées plus tard, il est donc conseillé de le spécifier lorsque c’est possible.

Je ne trouve pas le champ auquel je veux faire correspondre ma colonne

Odoo essaye de retrouver le type de champ pour chaque colonne de votre fichier en utilisant la méthode heuristique, et en se basant sur les dix premières lignes des fichiers. Par exemple, si vous avez une colonne qui ne contient que des nombres, seuls les champs de type entiers vous seront proposés. Bien que cela soit approprié et pratique la plupart du temps, il se peut aussi que cela ne fonctionne pas bien ou que vous vouliez faire correspondre votre colonne à un champ qui n’est pas proposé par défaut.

Si cela arrive, vous devez juste vérifier l’option ** Afficher les champs des champs de relation (avancé)**, vous pourrez ainsi choisir depuis la liste complète de champs pour chaque colonne.

../../_images/field_list.png

Où puis-je changer le format de la date d’importation?

Odoo peut détecter automatiquement s’il s’agit d’une colonne de dates et il essayera de deviner le format de date à partir d’une série contenant les formats de date les plus utilisés. Bien que ce processus puisse fonctionner pour beaucoup de formats de date, certains formats ne seront pas reconnus. Cela peut prêter à confusion à cause des inversions jour-mois, car il est difficile de deviner quelle partie du format de date correspond au jour et laquelle correspond au mois dans une date telle que “01-03-2016”.

Pour savoir quel format de date Odoo a détecté depuis votre fichier, vous pouvez vérifier le Format de date qui s’affiche lorsque l’on clique sur Options sous le sélecteur de fichiers. Si le format est incorrect vous pouvez le modifier selon vos préférences en utilisant l”ISO 8601 pour définir le format.

Note

Si vous importez un fichier Excel (.xls, .xlsx), vous pouvez utiliser les cellules de données pour mémoriser les dates car l’affichage des dates dans Excel est différent de leur stockage. Vous vous assurez ainsi que le format de date dans Odoo est correct quel que soit le format de date local.

Puis-je importer des nombres avec un symbole monétaire (par ex.: 32,00 $)?

Oui, nous prenons en charge des nombres avec une parenthèse pour représenter le signe moins ainsi que des nombres avec un symbole monétaire. Odoo détecte aussi automatiquement le séparateur décimal ou de milliers que vous utilisez (vous pouvez les modifier dans les options). Si vous utilisez un symbole monétaire inconnu d’Odoo, il se peut qu’il ne soit pas reconnu comme un nombre et qu’il se bloque.

Voici quelques exemples des nombres pris en charge (en utilisant trente-deux mille comme exemple) :

  • 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)

Que puis-je faire lorsque le tableau d’aperçu de l’importation ne s’affiche pas correctement?

Par défaut, l’aperçu de l’importation est défini sur des virgules comme séparateurs de champs et sur des guillemets comme délimiteurs de texte. Si votre fichier CSV n’a pas cette configuration, vous pouvez modifier les Options de format de fichier (affichées dans la barre Parcourir le fichier CSV après avoir sélectionné votre fichier).

Notez que si votre fichier CSV possède une tabulation comme séparateur, Odoo ne détectera pas les séparations. Vous allez devoir modifier les options de format de fichier sur l’application tableur. Consultez la question suivante.

Comment puis-je modifier les options de format du fichier CSV lors de la sauvegarde dans mon application tableur?

Si vous éditez et sauvegardez des fichiers CSV dans des applications tableur, la configuration régionale de votre ordinateur sera appliquée au séparateur et au délimiteur. Nous vous conseillons d’utiliser OpenOffice ou LibreOffice Calc, car ils vous permettront de modifier les trois options (Dans “Enregistrer sous” boîte de dialogue ‣ Cochez la case “Modifier les paramètres du filtre” ‣ Sauvez).

Lors de la sauvegarde, Microsoft Excel vous permettra de modifier uniquement l’encodage (Dans “Enregistrer sous” boîte de dialogue ‣ cliquez sur liste déroulante des “Outils” ‣ Onglet d’encodage).

Quelle est la différence entre base de données ID et ID externe?

Certains champs définissent une relation avec un autre objet. Par exemple, le pays d’un contact est un lien pour l’enregistrement de l’objet “Pays”. Lorsque vous voulez importer de tels champs, Odoo devra recréer des liens entre les différents enregistrements. Pour vous aider à importer de tels champs, Odoo prévoit trois méthodes. Vous devez utiliser une seule de ces méthodes pour chaque champ que vous voulez importer.

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

  • Pays : le nom ou le code du pays

  • Pays/Base de données ID : l’ID unique d’Odoo pour une donnée, défini par la colonne ID PostgreSQL.

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

Pour la Belgique, ces trois méthodes d’importation sont disponibles :

  • Pays : Belgique

  • Pays/Base de données ID : 21

  • Pays/Id. externe: base.be

Selon vos besoins, vous devez utiliser l’une de ces trois méthodes pour référencer les données dans les relations. Voici les situations où vous devez utiliser l’une ou l’autre :

  • Utilisez Pays : c’est la façon la plus facile lorsque vos données viennent d’un fichier CSV qui a été créé manuellement.

  • Utilisez Pays/Base de données ID : vous ne devez que rarement utiliser ce format. Il est surtout utilisé par les développeurs car son principal avantage est de ne jamais engendrer des conflits (vous pouvez avoir plusieurs données avec le même nom, mais elles ont toujours une ID de base de données unique).

  • Utilisez Pays/ID externe : utilisez l’ID externe lorsque vous importez des données à partir d’une application tierce.

Lorsque vous utilisez des IDs externes, vous pouvez importer des fichiers CSV en utilisant la colonne « ID externe » pour définir l’ID externe de chaque donnée que vous importez. Vous pourrez ensuite faire référence à ces données avec des colonnes telles que « Champ/ID externe ». Les deux fichiers CSV suivants vous donnent un exemple pour les produits et leurs catégories.

CSV file for categories.

CSV file for Products.

Que puis-je faire si j’ai plusieurs correspondances pour un champ ?

Si, par exemple, vous avez deux catégories de produits qui ont pour thème enfant le mot « Vendable » (c’est-à-dire « Produits divers/Vendable » et « Autres produits/Vendable »), votre validation est interrompue mais vous pouvez toujours importer vos données. Cependant, nous vous recommandons de ne pas importer ces données car elles seront toutes liées à la première catégorie “Vendable” qui se trouve dans la liste des catégories de produits (« Produits divers/Vendable »). Nous vous recommandons de modifier l’une des valeurs des doublons ou votre hiérarchie de catégories de produits.

Cependant, si vous ne voulez pas modifier la configuration de vos catégories de produits, nous vous recommandons d’utiliser l’ID externe pour le champ “Catégorie”.

Comment puis-je importer un champ de relation many2many (par ex. un client qui possède différentes balises) ?

Les balises doivent être séparées par une virgule sans espacement. Par exemple, si vous souhaitez que votre client soit lié aux deux balises “Fabricant” et “Détaillant”, vous devez encoder « Fabricant, Détaillant » dans la même colonne de votre fichier CSV.

CSV file for Manufacturer, Retailer

Comment puis-je importer une relation d’un à plusieurs (par ex. plusieurs lignes de commande ou un ordre de vente)?

Si vous souhaitez importer une commande client comportant plusieurs lignes de commande, vous devez prévoir une ligne spécifique dans le fichier CSV pour chaque ligne de commande. La première ligne de commande sera importée sur la même ligne que les informations relatives à cette commande. Toute nouvelle ligne de commande aura besoin d’une ligne supplémentaire dont les champs relatifs à la commande ne contiennent aucune information. À titre d’exemple, voici le fichier de quelques devis que vous pouvez importer, sur la base de données de démonstration.``purchase.order_functional_error_line_cant_adpat.CSV`

File for some Quotations.

Le fichier CSV suivant montre comment importer des commandes et leurs lignes de commande respectives :

Purchase orders with their respective purchase order lines.

Le fichier CSV suivant montre comment importer des clients et leurs contacts respectifs :

Customers and their respective contacts.

Puis-je importer plusieurs fois le même enregistrement ?

If you import a file that contains one of the column « External ID » or « Database ID », records that have already been imported will be modified instead of being created. This is very useful as it allows you to import several times the same CSV file while having made some changes in between two imports. Odoo will take care of creating or modifying each record depending if it’s new or not.

Cette fonctionnalité vous permet d’utiliser l’outil Import/Export d’Odoo pour modifier un lot de données dans votre application tableur favorite.

Que se passe t-il si je ne propose pas de valeur pour un champ spécifique?

Si vous ne définissez pas tous les champs dans votre fichier CSV, Odoo attribuera la valeur par défaut pour chaque champ non défini. Mais si vous définissez des champs avec des valeurs vides dans votre fichier CSV, Odoo définira la valeur VIDE dans le champ, au lieu d’assigner la valeur par défaut.

Comment exporter/importer des tableaux différents depuis une application SQL vers Odoo?

Si vous devez importer des données de différentes tables, vous devrez recréer des relations entre les données appartenant à différentes tables. (par exemple, si vous importez des sociétés et des personnes, vous devrez recréer le lien entre chaque personne et la société pour laquelle elle travaille).

Pour gérer les relation entre des tableaux, vous pouvez utiliser les fonctionnalités « ID externe » d’Odoo. L“« ID externe » d’une donnée est l’unique identificateur de cette donnée dans une autre application. Cet « ID externe » doit être unique pour toutes les données de tous les objets, il est donc recommandé de faire précéder cet « External ID » du nom de l’application ou de la table. (comme “entreprise_1”, “personne_1” au lieu de “1”).

As an example, suppose you have a SQL database with two tables you want to import: companies and persons. Each person belong to one company, so you will have to recreate the link between a person and the company he work for. (If you want to test this example, here is a dump of such a PostgreSQL database)

Nous allons importer d’abord toutes les entreprises ainsi que leur « ID externe ». Tapez la commande Dans PSQL :

> 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 va générer 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 les fichiers CSV pour des personnes, liées à des entreprises, nous allons utiliser la commande SQL suivante en 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

Cela va générer 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

Comment vous pouvez voir dans ce fichier, Fabien et Laurence travaillent pour l’entreprise Bigees (entreprise_1) et Eric travaille pour l’entreprise Organi. La relation entre les personnes et les entreprises se fait à l’aide de l’ID externe des entreprises. Nous avons du faire précéder l »ID externe » du nom du tableau pour éviter un conflit d’ID entre les personnes et les entreprises (personne_1 et entreprise_1 qui avaient le même ID 1 dans la base de données initiale).

Les deux fichiers créés sont prêts à être importés dans Odoo sans aucune modification. Après avoir importé ces deux fichiers CSV, vous aurez 4 contacts et 3 entreprises. (les deux premiers contacts sont liés à la première entreprise). Vous devez d’abord importer les entreprises et ensuite les personnes.

Comment adapter un template d’importation

Des templates d’importation sont fournis dans l’outil d’importation des données les plus courantes à importer (contacts, produits, relevés bancaires, etc.). Vous pouvez les ouvrir avec n’importe quel logiciel tableur (Microsoft Office, OpenOffice, Google Drive, etc.).

Comment personnaliser le fichier

  • Supprimez les colonnes dont vous n’avez pas besoin. Nous vous conseillons de ne pas supprimer la colonne ID (voyez pourquoi ci-dessous).

  • Définissez un ID unique pour chaque donnée en tirant la séquence ID vers le bas.

    ../../_images/dragdown.gif
  • Lorsque vous ajoutez une nouvelle colonne, Odoo risque de ne pas pouvoir la cartographier automatiquement si son libellé ne correspond à aucun champ du système. Dans ce cas, utilisez la fonction de recherche pour trouver le champ correspondant.

    ../../_images/field_list.png

    Utilisez ensuite le libellé que vous avez trouvé dans votre template d’importation pour le faire fonctionner directement la prochaine fois que vous essaierez d’importer.

Pourquoi utiliser une colonne “ID”

L”ID (ID externe) est un identifiant unique associé à chaque ligne. N’hésitez pas à utiliser celui de votre ancien logiciel pour faciliter la transition vers Odoo.

Vous n’êtes pas obligé de configurer un ID lors de l’importation mais cela peut être utile dans certains cas :

  • Importations de mise à jour : vous pouvez importer le même fichier plusieurs fois sans devoir créer un doublon;

  • Importer des champs de liens (voir ci-dessous).

Comment importer des champs de liens

Un objet Odoo est toujours lié à de nombreux autres objets (par ex. un produit est lié à des catégories de produits, à des caractéristiques, à des vendeurs, etc.). Pour importer ces relations, vous devez d’abord importer les données de l’objet lié depuis leur propre menu déroulant.

Pour ce faire, vous pouvez soit utiliser le nom de la donnée liée soit son ID. Lorsque deux données ont le même nom, il faut utiliser l’ID. Dans ce cas, ajoutez  » / ID » à la fin du titre de la colonne (par ex. pour les caractéristiques du produit : Caractéristiques du produit / Caractéristiques / ID).