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 du arbetar med en databas är det ibland nödvändigt att exportera data i en separat fil. Att göra det kan underlätta rapportering av aktiviteter, även om Odoo tillhandahåller ett exakt rapportverktyg med varje tillgänglig ansökan.

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

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

När du klickar på Exportera visas ett popup-fönster Exportera data med flera optioner för data som ska exporteras:

Översikt över alternativ att tänka på när du exporterar data i Odoo...
  1. Med optionen Jag vill uppdatera data (importkompatibel export) markerad visar systemet endast de fält som kan importeras. Detta är användbart i det fall då befintliga handlingar behöver uppdateras. Detta fungerar som ett filter. Om rutan lämnas omarkerad ges många fler fältalternativ eftersom det visar alla fält, 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 objekten som kan exporteras. Använd ikonen (Visa underfält) för att visa fler underfältsalternativ. Använd sökfältet Sök för att hitta specifika fält. För att använda alternativet Sök mer effektivt, klicka på alla ikoner (Visa underfält) för att visa alla fält.

  4. Ikonknappen (Välj fält) används för att lägga till fält i listan Fält att exportera.

  5. Ikonen (Sortera) till vänster om de valda fälten kan användas för att flytta fälten upp och ner, för att ändra i vilken ordning de visas i den exporterade filen. Dra och släpp med ikonen (Sortera).

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

  7. För återkommande rapporter är det användbart att spara exportförinställningar. Välj alla nödvändiga fält och klicka på rullgardinsmenyn för mallar. Klicka där på Ny mall och ge ett unikt namn till exportmallen. Klicka på ikonen (diskett) för att spara konfigurationen. Nästa gång samma lista behöver exporteras, välj den relaterade mallen 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 bulk. Följande dokumentation beskriver hur man 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 objektet som data ska importeras/fyllas i till, klicka på ikonen (Åtgärd) och välj i rullgardinsmenyn (Importera handlingar).

Åtgärdsmenyn 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å korrekta kolumnnamn för import är att exportera en exempelfil med de fält som ska importeras. På detta sätt, om det inte finns någon exempelimportmall, är namnen korrekta.

Importera från en annan applikation

Externt ID (ID) är en unik identifierare för en radartikel. Det är möjligt att använda ett Externt ID (ID) från tidigare mjukvara 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 konflikter uppstår om två (eller flera) poster har samma External ID.

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 omfattar världsomspännande utbyte tillsammans med kommunikation av datum- och tidsrelaterad data. Till exempel bör datumformatet vara ÅÅÅÅ-MM-DD. I fallet med den 24 juli 1981 ska det skrivas som 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.

Example

Ett företag importerar offerter med hjälp av en CSV-fil, baserad på demodata:

Ett företag importerar inköpsordrar med sina respektive inköpsorderrader med hjälp av en CSV-fil:

Ett företag importerar kunder och deras respektive kontakter med hjälp av en CSV-fil:

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 är inställda i CSV-filen tilldelar Odoo standardvärdet för varje odefinierat fält. Men om fält är inställda med tomma värden i CSV-filen, ställer Odoo in 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.

Uppdatera data i Odoo

Befintliga data kan uppdateras i bulk genom en dataimport, så länge som Externt ID förblir konsekvent.

Förbereda dataexport

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.

I popup-fönstret Export Data som visas markerar du kryssrutan Jag vill uppdatera data (importkompatibel export). Detta inkluderar automatiskt Externt ID i exporten. Dessutom begränsas listan Fields to export till att endast innehålla fält som kan importeras.

Observera

Fältet Externt ID visas inte i listan Fält att exportera om det inte läggs till manuellt, men det ingår ändå i exporten. Om kryssrutan Jag vill uppdatera data (importkompatibel export) är markerad ingår det dock i exporten.

Välj de obligatoriska fält som ska ingå i exporten med hjälp av options i popup-fönstret och klicka sedan på Export.

Importera uppdaterade data

Efter exporten gör du eventuella nödvändiga ändringar i datafilen. När filen är klar kan den importeras genom att följa samma process som vid en normal dataimport.

Risk

Vid uppdatering av data är det mycket viktigt att Externt ID förblir konsekvent, eftersom det är så systemet identifierar en post. Om ett ID ändras eller tas bort kan systemet lägga till en duplikatpost i stället för att uppdatera den befintliga.