Exportera och importera data

I Odoo är det ibland nödvändigt att exportera eller importera data för att köra rapporter eller för att ändra data. Detta dokument behandlar export och import av data till och från Odoo.

Viktigt

Ibland stöter användare på ett ”time out”-fel, eller så bearbetas inte en post på grund av dess storlek. Detta kan inträffa vid stora exporter, eller i fall där importfilen är för stor. För att kringgå denna begränsning kring posternas storlek, bearbeta export eller import i mindre satser.

Exportera data från Odoo

När man arbetar med en databas är det ibland nödvändigt att exportera data i en separat fil. Detta kan underlätta rapporteringen av aktiviteter, men Odoo tillhandahåller ett exakt och enkelt rapporteringsverktyg med varje tillgänglig applikation.

Med Odoo kan värdena exporteras från vilket fält som helst i vilken post som helst. Det gör du genom att aktivera listvyn (☰ (tre horisontella linjer) ikon), på de objekt som behöver exporteras och sedan välja de poster som ska exporteras. Om du vill välja en post markerar du kryssrutan bredvid motsvarande post. Klicka slutligen på ⚙️ Action, och sedan Export.

Vy över olika saker att aktivera/klicka på för att exportera data.

När du klickar på Export visas ett popup-fönster Export Data med flera alternativ för vilka data som ska exporteras:

Översikt över alternativ att tänka på när du exporterar data i Odoo...
  1. När alternativet Jag vill uppdatera data (import-kompatibel export) är markerat visar systemet endast de fält som kan importeras. Detta är användbart i de fall då befintliga poster behöver uppdateras. Detta fungerar som ett filter. Om du lämnar rutan omarkerad får du många fler fältalternativ eftersom alla fält visas, inte bara de som kan importeras.

  2. Vid export finns det möjlighet att exportera i två format: .csv och .xls. I .csv separeras posterna med ett kommatecken, medan .xls innehåller information om alla kalkylblad i en fil, inklusive både innehåll och formatering.

  3. Detta är de objekt som kan exporteras. Använd ikonen > (högerpil) för att visa fler alternativ för underfält. Använd Sök för att hitta specifika fält. Om du vill använda Sök mer effektivt kan du klicka på alla > (högerpilar) för att visa alla fält.

  4. Ikonknappen + (plustecken) finns för att lägga till fält i listan Fields to export.

  5. Med ↕️ (pil upp-ned) till vänster om de markerade fälten kan du flytta fälten upp och ner och ändra i vilken ordning de visas i den exporterade filen. Dra-och-släpp med hjälp av ikonen ↕️ (pil upp-ned).

  6. Ikonen 🗑️ (papperskorg) används för att ta bort fält. Klicka på ikonen 🗑️ (papperskorg) för att ta bort fältet.

  7. För återkommande rapporter är det bra att spara exportförinställningar. Markera alla fält som behövs och klicka på rullgardinsmenyn för mall. Klicka sedan på Ny mall och ge ett unikt namn till den export som just skapats. Nästa gång samma lista behöver exporteras väljer du den relaterade mall som tidigare sparats från rullgardinsmenyn.

Tips

Det är bra att känna till fältets externa identifierare. Till exempel är Related Company i användargränssnittet för export lika med parent_id (extern identifierare). Detta är användbart eftersom de enda data som exporteras är de som ska modifieras och importeras igen.

Importera data till Odoo

Att importera data till Odoo är till stor hjälp under implementeringen, eller när data behöver uppdateras i stora mängder. Följande dokumentation beskriver hur du importerar data till en Odoo-databas.

Varning

Importer är permanenta och kan inte ångras. Det är dock möjligt att använda filter (created on eller last modified) för att identifiera poster som ändrats eller skapats av importen.

Tips

Om du aktiverar utvecklarläge ändras de synliga importinställningarna i vänstermenyn. Om du gör det visas en Avancerad-meny. I den avancerade menyn finns två alternativ: Spåra historik under import och Tillåt matchning med underfält.

Avancerade importalternativ när utvecklarläget är aktiverat.

Om modellen använder openchatter skapar alternativet Spåra historik under import prenumerationer och skickar meddelanden under importen, men det leder till en långsammare import.

Om alternativet Tillåt matchning med delfält är valt, används alla delfält inom ett fält för att matcha under Odoo-fält vid import.

Kom igång

Data kan importeras till alla Odoo-affärsobjekt med hjälp av antingen Excel (.xlsx) eller CSV (.csv) format. Detta inkluderar: kontakter, produkter, kontoutdrag, verifikat och order.

Öppna vyn för det objekt till vilket data ska importeras/populeras, och klicka på ⭐ Favoriter ‣ Importera poster.

Menyn Favoriter visas med alternativet Importera poster markerat.

Efter att ha klickat på Import records, visar Odoo en separat sida med mallar som kan laddas ner och fyllas med företagets egna data. Sådana mallar kan importeras med ett klick, eftersom datamappningen redan är gjord. För att ladda ner en mall klickar du på Importmall för kunder i mitten av sidan.

Viktigt

När du importerar en CSV-fil tillhandahåller Odoo Formatting-alternativ. Dessa alternativ visas inte när du importerar den proprietära Excel-filtypen (.xls, .xlsx).

Formateringsalternativ som visas när en CVS-fil importeras i Odoo.

Gör nödvändiga justeringar av alternativen Formatering och se till att alla kolumner i Odoo field och File Column är fria från fel. Klicka slutligen på Import för att importera data.

Anpassa en mall

Importmallar finns i importverktyget för de vanligaste data som ska importeras (kontakter, produkter, kontoutdrag etc.). Öppna dem med valfritt kalkylprogram (Microsoft Office, OpenOffice, Google Drive, etc.).

När mallen har laddats ner fortsätter du att följa dessa steg:

  • Lägg till, ta bort och sortera kolumner så att de passar datastrukturen på bästa sätt.

  • Det rekommenderas starkt att inte ta bort kolumnen External ID (ID) (se varför i nästa avsnitt).

  • Ange ett unikt ID för varje post genom att dra ned ID-sekvensen i kolumnen External ID (ID).

En animering av musen som drar ned ID-kolumnen, så att varje post har ett unikt ID.

Observera

När en ny kolumn läggs till kan det hända att Odoo inte kan mappa den automatiskt, om dess etikett inte passar något fält i Odoo. Nya kolumner kan dock mappas manuellt när importen testas. Sök i rullgardinsmenyn efter motsvarande fält.

Rullgardinsmenyn expanderade i den första importskärmen på Odoo.

Använd sedan detta fälts etikett i importfilen för att säkerställa att framtida importer lyckas.

Tips

Ett annat användbart sätt att ta reda på vilka kolumnnamn som ska importeras är att exportera en exempelfil med de fält som ska importeras. På så sätt blir namnen korrekta om det inte finns någon mall för exempelimport.

Importera från en annan applikation

External ID (ID) är en unik identifierare för radposten. Använd gärna ett från tidigare programvara för att underlätta övergången till Odoo.

Det är inte obligatoriskt att ange ett ID vid import, men det underlättar i många fall:

För att återskapa relationer mellan olika poster bör den unika identifieraren från den ursprungliga applikationen användas för att mappa den till kolumnen External ID (ID) i Odoo.

När en annan post importeras som länkar till den första, använd XXX/ID (XXX/External ID) för den ursprungliga unika identifieraren. Denna post kan också hittas med hjälp av dess namn.

Varning

Det bör noteras att det uppstår en konflikt om två eller flera poster har samma namn.

External ID (ID) kan också användas för att uppdatera den ursprungliga importen, om modifierade data behöver återimporteras senare, därför är det en god praxis att ange det när det är möjligt.

Fält saknas för att kartlägga kolumn

Odoo försöker heuristiskt hitta typen av fält för varje kolumn i den importerade filen, baserat på de första tio raderna i filerna.

Om det t.ex. finns en kolumn som bara innehåller siffror visas bara de fält som har typen integer som alternativ.

Även om detta beteende kan vara fördelaktigt i de flesta fall, är det också möjligt att det kan misslyckas, eller kolumnen kan mappas till ett fält som inte föreslås som standard.

Om detta händer, kontrollera alternativet Visa fält för relationsfält (avancerat), då blir en fullständig lista över fält tillgänglig för varje kolumn.

Söker efter fältet för att matcha skattekolumnen.

Ändra format för dataimport

Observera

Odoo kan automatiskt upptäcka om en kolumn är ett datum och försöker gissa datumformatet från en uppsättning av de vanligaste datumformaten. Denna process kan fungera för många datumformat, men vissa datumformat är inte igenkännbara. Detta kan orsaka förvirring på grund av dag-månad-inversioner; det är svårt att gissa vilken del av ett datumformat som är dagen och vilken del som är månaden, i ett datum, till exempel 01-03-2016.

När du importerar en CSV-fil tillhandahåller Odoo Formatting-alternativ.

För att se vilket datumformat Odoo har hittat från filen, kontrollera Date Format som visas när du klickar på alternativ under filväljaren. Om detta format är felaktigt, ändra det till önskat format med hjälp av *ISO 8601 * för att definiera formatet.

Viktigt

ISO 8601 är en internationell standard som täcker det globala utbytet samt kommunikationen av datum- och tidsrelaterade data. Till exempel ska datumformatet vara ÅÅÅÅ-MM-DD. I fallet med den 24 juli 1981 ska det alltså skrivas 1981-07-24.

Tips

När du importerar Excel-filer (.xls, .xlsx) bör du överväga att använda datumceller för att lagra datum. Detta bibehåller lokala datumformat för visning, oavsett hur datumet är formaterat i Odoo. När du importerar en CSV-fil, använd Odoo’s Formatting avsnitt för att välja de datumformat kolumner som ska importeras.

Importera siffror med valutatecken

Odoo har fullt stöd för siffror med parenteser för att representera negativa tecken, samt siffror med valutatecken kopplade till dem. Odoo känner också automatiskt av vilken tusen-/decimalseparator som används. Om en valutasymbol som är okänd för Odoo används kanske den inte identifieras som ett tal, och importen kraschar.

Observera

När du importerar en CSV-fil visas menyn Formatting i den vänstra kolumnen. Under dessa alternativ kan Tusenseparator ändras.

Exempel på siffror som stöds (med ”trettiotvå tusen” som siffra):

  • 32.000,00

  • 32000,00

  • 32,000.00

  • -32000.00

  • (32000.00)

  • $ 32.000,00

  • (32000.00 €)

Exempel som inte kommer att fungera:

  • ABC 32 000,00

  • $ (32.000,00)

Viktigt

En () (parentes) runt talet indikerar att talet är ett negativt värde. Valutasymbolen måste placeras inom parentesen för att Odoo ska känna igen det som ett negativt valutavärde.

Förhandsgranskningstabell för import visas inte korrekt

Som standard är importförhandsgranskningen inställd på kommatecken som fältavgränsare och citattecken som textavgränsare. Om CSV-filen inte har dessa inställningar ändrar du Formatting-alternativen (visas under Import CSV-filfältet efter att du har valt CSV-filen).

Viktigt

Om CSV-filen har en tabulering som separator, kommer Odoo inte att upptäcka separationerna. Filformatalternativen måste ändras i kalkylprogrammet. Se följande Ändra CSV-filformat avsnitt.

Ändra CSV-filformat i kalkylprogram

När du redigerar och sparar CSV-filer i kalkylprogram används datorns regionala inställningar för separator och avgränsare. Odoo föreslår att man använder OpenOffice eller LibreOffice, eftersom båda programmen tillåter ändringar av alla tre alternativen (från LibreOffice-programmet, gå till ’Spara som’ dialogruta ‣ Markera rutan ’Redigera filterinställningar’ ‣ Spara).

Microsoft Excel kan ändra kodningen när du sparar (’Spara som’ dialogruta ‣ ’Verktyg’ rullgardinsmeny ‣ Kodningsfliken).

Skillnad mellan databas-ID och externt ID

Vissa fält definierar en relation med ett annat objekt. Till exempel är en kontakts land en länk till en post i objektet ”Land”. När sådana fält importeras måste Odoo återskapa länkar mellan de olika posterna. Odoo tillhandahåller tre mekanismer för att underlätta import av sådana fält.

Viktigt

Endast en mekanism ska användas per fält som importeras.

Om du till exempel vill ange landet för en kontakt föreslår Odoo tre olika fält att importera:

  • Country: landets namn eller kod

  • Country/Database ID: det unika Odoo-ID för en post, definierad av ID PostgreSQL-kolumnen

  • Country/External ID: ID för denna post som refereras till i ett annat program (eller .XML-filen som importerade den)

För landet Belgien, till exempel, använder du ett av dessa tre sätt att importera:

  • Land: Belgien

  • Land/Databas ID: 21

  • Land/Externt ID: base.be

Beroende på företagets behov använder du ett av dessa tre sätt att referera till poster i relationer. Här är ett exempel på när det ena eller det andra bör användas, beroende på behovet:

  • Använd Country: detta är det enklaste sättet när data kommer från CSV-filer som har skapats manuellt.

  • Använd Country/Database ID: detta bör sällan användas. Det används mest av utvecklare eftersom den största fördelen är att aldrig ha konflikter (det kan finnas flera poster med samma namn, men de har alltid ett unikt databas-ID)

  • Använd Country/External ID: använd External ID när du importerar data från en tredjepartsapplikation.

När externa ID:n används importerar du CSV-filer med External ID (ID)-kolumnen som definierar external ID för varje post som importeras. Sedan kan en referens göras till den posten med kolumner, som Field/External ID. Följande två CSV-filer ger ett exempel för produkter och deras kategorier.

Importera relationsfält

Ett Odoo-objekt är alltid relaterat till många andra objekt (t.ex. en produkt är länkad till produktkategorier, attribut, leverantörer etc.). För att importera dessa relationer måste posterna för det relaterade objektet importeras först, från deras egen listmeny.

Detta kan uppnås genom att använda antingen namnet på den relaterade posten eller dess ID, beroende på omständigheterna. ID förväntas när två poster har samma namn. I sådana fall lägg till ”/ ID” i slutet av kolumnrubriken (t.ex. för produktattribut: ”Produktattribut / Attribut / ID”).

Alternativ för flera matcher på fält

Om det till exempel finns två produktkategorier med det underordnade namnet ”Sellable” (t.ex. ”Misc. Products/Sellable” & ”Other Products/Sellable”), stoppas valideringen, men data kan fortfarande importeras. Odoo rekommenderar dock att data inte importeras eftersom allt kommer att vara länkat till den första ”Säljbara” kategorin som finns i Produktkategori-listan (”Övriga produkter/säljbara”). Odoo rekommenderar istället att du ändrar ett av dubblettens värden, eller produktkategorihierarkin.

Men om företaget inte vill ändra konfigurationen av produktkategorier, rekommenderar Odoo att använda External ID för detta fält, ”Kategori”.

Importera fält för many2many-relationer

Taggarna ska separeras med ett kommatecken, utan något mellanrum. Till exempel, om en kund behöver länkas till båda taggarna: Manufacturer och Retailer så måste ’Manufacturer,Retailer’ kodas i samma kolumn i CSV-filen.

Importera en2many relationer

Om ett företag vill importera en försäljningsorder med flera orderrader, måste en specifik rad reserveras i CSV-filen för varje orderrad. Den första orderraden importeras på samma rad som informationen om ordern. Alla ytterligare rader behöver en ytterligare rad som inte har någon information i fälten som är relaterade till ordern.

Här är ett exempel på en CSV-fil med några citat som kan importeras, baserat på demodata:

Följande CSV-fil visar hur du importerar inköpsorder med deras respektive inköpsorderrader:

Följande CSV-fil visar hur man importerar kunder och deras respektive kontakter:

Importera poster flera gånger

Om en importerad fil innehåller en av kolumnerna: External ID eller Database ID, kommer poster som redan har importerats att ändras istället för att skapas. Detta är mycket användbart eftersom användare kan importera samma CSV-fil flera gånger, samtidigt som de har gjort vissa ändringar mellan två importer.

Odoo tar hand om att skapa eller ändra varje post, beroende på om den är ny eller inte.

Med den här funktionen kan ett företag använda verktyget Import/Export i Odoo för att ändra ett antal poster i ett kalkylprogram.

Värde anges inte för ett specifikt område

Om alla fält inte har angetts i CSV-filen, tilldelar Odoo standardvärdet för varje icke-definierat fält. Men om fält anges med tomma värden i CSV-filen, anger Odoo det tomma värdet i fältet istället för att tilldela standardvärdet.

Exportera/importera olika tabeller från en SQL-applikation till Odoo

Om data importeras från olika tabeller måste relationerna mellan poster som tillhör olika tabeller återskapas. Om t.ex. företag och personer importeras måste länken mellan varje person och det företag de arbetar för återskapas.

För att hantera relationer mellan tabeller, använd External ID faciliteter i Odoo. Det Externa ID för en post är den unika identifieraren för denna post i en annan applikation. Det externa ID:t måste vara unikt för alla poster i alla objekt. Det är en god praxis att prefixa detta External ID med namnet på applikationen eller tabellen. (t.ex. ”företag_1”, ”person_1” - istället för ”1”)

Anta till exempel att det finns en SQL-databas med två tabeller som ska importeras: företag och personer. Varje person tillhör ett företag, så länken mellan en person och det företag de arbetar för måste återskapas.

Testa detta exempel med en sample av en PostgreSQL-databas.

Exportera först alla företag och deras External ID. Skriv följande kommando i 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;

Det här SQL-kommandot skapar följande CSV-fil:

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

Använd följande SQL-kommando i PSQL för att skapa filen CSV för personer som är kopplade till företag:

> 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

Det producerar följande CSV-fil:

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

I denna fil arbetar Fabien och Laurence för företaget Bigees (företag_1), och Eric arbetar för företaget Organi. Relationen mellan personer och företag görs med hjälp av företagens Externa ID. Externt ID föregås av tabellens namn för att undvika en ID-konflikt mellan personer och företag (person_1 och företag_1, som delade samma ID 1 i den ursprungliga databasen).

De två producerade filerna är redo att importeras i Odoo utan några ändringar. Efter att ha importerat dessa två CSV filer, finns det fyra kontakter och tre företag (de två första kontakterna är länkade till det första företaget). Tänk på att först importera företagen och sedan personerna.