導出和導入數據?

從Odoo導出數據?

在處理數據庫時,有時需要將數據導出到一個獨立的文件中。這樣做可以幫助對您的活動進行報告(即使Odoo為每個可用的應用程序提供了精確且易于使用的報告工具)。

With Odoo,您可以導出任何記錄中任何字段的值。要這樣做,請激活需要導出的項目的列表視圖,單擊“操作”,然后單擊“導出”。

查看不同的選項以啟用/點擊導出數據

非常簡單,但是此操作仍然具有一些特殊性。實際上,當單擊“導出”時,會彈出一個窗口,其中包含要導出的數據的幾個選項:

在Odoo中導出數據時需要考慮的所有選項概述
  1. 勾選“我想更新數據”選項后,系統只顯示可以導入的字段。這對于您想要更新現有記錄非常有幫助?;旧?,這就像一個過濾器。如果不勾選該框,則會顯示所有字段,而不僅僅是可以導入的字段,因此提供了更多的字段選項。

  2. 在導出時,您可以選擇兩種格式:.csv 和 .xls。使用 .csv,項目用逗號分隔,而 .xls 包含文件中所有工作表的信息,包括內容和格式。

  3. 這些是您可能想要導出的項目。使用箭頭顯示更多子字段選項。當然,您可以使用搜索欄更輕松地查找特定字段。為了更有效地使用搜索選項,請單擊所有箭頭顯示所有字段!

  4. “+”按鈕用于將字段添加到“要導出的”列表中。

  5. 所選字段旁邊的“手柄”允許您上下移動字段,以更改它們在導出文件中顯示的順序。

  6. 如果您需要刪除字段,垃圾桶就在那里。

  7. 對于經常性的報告,保存導出預設可能會很有用。選擇所有需要的預設,然后點擊模板欄。在那里,點擊“新模板”,并為您的模板命名。下次需要導出相同的列表時,只需選擇相關的模板即可。

小技巧

記住字段的外部標識符是很好的。例如, 相關公司 等同于 parent_id 。這樣做有助于僅導出您想要導入的內容。

將數據導入Odoo?

如何開始?

您可以使用Excel (.xlsx)或CSV (.csv)格式導入任何Odoo的業務對象數據:聯系人、產品、銀行對賬單、日記賬甚至訂單!

打開您想要填充的對象視圖,然后單擊 收藏夾 ? 導入記錄 。

../../_images/import_button.png

您可以在那里獲得模板,您可以輕松地填充自己的數據。這些模板可以一鍵導入;數據映射已經完成。

如何調整模板?

  • 添加、刪除和排序列以最好地適應您的數據結構。

  • 我們建議不要刪除 ID 字段(請參見下一節了解原因)。

  • 通過向下拖動ID序列,為每個記錄設置唯一的ID。

../../_images/dragdown.gif
  • 當您添加新列時,如果其標簽不符合Odoo中的任何字段,則Odoo可能無法自動映射它。不用擔心!您可以在測試導入時手動映射新列。在列表中搜索相應的字段。

    ../../_images/field_list.png

    然后,在您的文件中使用此字段的標簽,以便在下一次使用時直接運行。

如何從另一個應用程序導入數據?

為了重新創建不同記錄之間的關系,您應該使用原始應用程序中的唯一標識符,并將其映射到Odoo中的 ID (外部ID)列。當您導入另一個鏈接到第一個記錄的記錄時,使用 XXX/ID (XXX/外部ID)到原始唯一標識符。您也可以使用名稱找到此記錄,但如果至少有2個記錄具有相同的名稱,則會出現問題。

ID 也將用于更新原始導入數據,如果您需要稍后重新導入修改后的數據,因此最好在可能的情況下指定它。

我找不到我想要映射到的字段?

Odoo會根據文件的前十行進行一些啟發式的分析,來確定文件中每個列的字段類型。例如,如果您有一個只包含數字的列,那么只有類型為 整數 的字段會被顯示供您選擇。雖然這種行為對于大多數情況來說可能是好的和簡單的,但也有可能出錯,或者您想將列映射到默認未提供的字段。

如果發生這種情況,您只需勾選 顯示關聯字段(高級) 選項,然后您就可以從每個列的完整字段列表中進行選擇。

../../_images/field_list.png

在哪里可以更改日期導入格式??

Odoo可以自動檢測列是否為日期,并嘗試從一組最常用的日期格式中猜測日期格式。雖然這個過程可以適用于許多日期格式,但有些日期格式將無法識別。這可能會導致由于日月倒置而產生混淆;在日期格式如“01-03-2016”中,很難猜測哪部分是日,哪部分是月。

要查看Odoo從您的文件中找到的日期格式,您可以單擊文件選擇器下的 選項 ,然后查看顯示的 日期格式 。如果此格式不正確,您可以使用 ISO 8601 來定義格式,將其更改為您喜歡的格式。

注解

如果您正在導入Excel(.xls,.xlsx)文件,則可以使用日期單元格將日期存儲為顯示日期與存儲日期不同。這樣,無論您的本地日期格式如何,您都可以確保日期格式在Odoo中正確。

我可以導入帶有貨幣符號的數字嗎(例如:$32.00)??

Yes,我們完全支持使用括號表示負號的數字,以及帶有貨幣符號的數字。Odoo還會自動檢測您使用的千位分隔符/小數點分隔符(您可以在 選項 中更改)。如果您使用的貨幣符號Odoo不認識,它可能無法被識別為數字,從而導致崩潰。

支持的數字示例(以三萬二千為例):

  • 32,000.00

  • 32000,00

  • 32,000.00

  • -32000.00

  • (32000.00)

  • $ 32.000,00

  • (32000.00 €)

無法工作的示例:

  • ABC 32,000.00

  • $ (32,000.00)

當導入預覽表未正確顯示時,我該怎么辦??

默認情況下,導入預覽設置為逗號作為字段分隔符,引號作為文本定界符。如果您的csv文件沒有這些設置,您可以修改文件格式選項(在選擇文件后,在瀏覽CSV文件欄下顯示)。

請注意,如果您的 CSV 文件使用制表符作為分隔符,Odoo 將無法檢測到分隔符。您需要在電子表格應用程序中更改文件格式選項。請參閱以下問題。

我該如何在電子表格應用程序中保存時更改CSV文件格式選項??

如果您在電子表格應用程序中編輯并保存CSV文件,則會應用計算機的區域設置作為分隔符和分隔符。我們建議您使用OpenOffice或LibreOffice Calc,因為它們將允許您修改所有三個選項(在 :menuselection:`’保存為’對話框 –> 選中 ‘編輯篩選器設置’ 復選框 –> 保存)。

Microsoft Excel只允許您在保存時修改編碼(在 :menuselection:`’另存為’對話框 –> 點擊 ‘工具’ 下拉列表 –> 編碼選項卡)。

數據庫 ID 和外部 ID 有什么區別??

一些字段定義了與另一個對象的關系。例如,聯系人的國家是與“國家”對象的記錄鏈接。當您想要導入這些字段時,Odoo將不得不重新創建不同記錄之間的鏈接。為了幫助您導入這些字段,Odoo提供了三種機制。您必須為每個要導入的字段使用一種且僅一種機制。

例如,要引用聯系人的國家,Odoo為您提供了3個不同的導入字段:

  • 國家:國家的名稱或代碼

  • 國家/數據庫ID:記錄的唯一Odoo ID,由ID postgresql列定義

  • 國家/外部ID:在另一個應用程序(或導入它的.XML文件)中引用此記錄的ID

對于比利時,您可以使用以下三種方式之一進行導入:

  • 國家:比利時

  • 國家/數據庫 ID:21

  • 國家/外部ID:base.be

根據您的需求,您應該使用以下三種方式之一來引用關系中的記錄。以下是根據您的需求使用其中一種或另一種的情況:

  • 使用國家:當您的數據來自手動創建的CSV文件時,這是最簡單的方法。

  • 使用國家/數據庫ID:您很少使用此符號。它主要由開發人員使用,其主要優點是永遠不會發生沖突(您可能有多個具有相同名稱的記錄,但它們始終具有唯一的數據庫ID)

  • 使用國家/外部ID:當您從第三方應用程序導入數據時,請使用外部ID。

使用外部ID時,您可以導入帶有“外部ID”列的CSV文件,以定義導入的每個記錄的外部ID。然后,您將能夠使用“字段/外部ID”等列引用該記錄。以下兩個CSV文件為產品及其類別提供了示例。

導出/導入數據的CSV文件,包含產品類別信息 。

產品的CSV文件 。

如果一個字段有多個匹配項,我該怎么辦??

例如,如果您有兩個產品類別,子名稱為“可銷售”(即“雜項產品/可銷售”和“其他產品/可銷售”),則您的驗證會停止,但您仍然可以導入數據。但是,我們建議您不要導入數據,因為它們都將鏈接到產品類別列表中找到的第一個“可銷售”類別(“雜項產品/可銷售”)。我們建議您修改其中一個重復的值或您的產品類別層次結構。

然而,如果您不想更改產品類別的配置,我們建議您使用外部ID來填寫“類別”字段。

如何導入多對多關系字段(例如具有多個標簽的客戶)??

標簽應該用逗號分隔,不要有任何空格。例如,如果您想將客戶鏈接到“制造商”和“零售商”兩個標簽,則應在CSV文件的同一列中編碼“制造商,零售商”。

制造商、零售商的CSV文件

如何導入一對多關系(例如,銷售訂單的多個訂單行)??

如果您想導入具有多個訂單行的銷售訂單,則對于每個訂單行,您需要在CSV文件中保留特定的行。第一條訂單行將與與訂單相關的信息一起導入到同一行中。任何其他行都需要一個額外的行,該行在與訂單相關的字段中沒有任何信息。例如,這是一些基于演示數據可以導入的報價的 purchase.order_functional_error_line_cant_adpat.CSV 文件。

一些報價的文件 。

以下CSV文件展示了如何導入帶有相應采購訂單行的采購訂單:

帶有其相應采購訂單行的采購訂單 。

以下 CSV 文件展示了如何導入客戶及其相關聯系人信息:

客戶及其相關聯系人 。

我可以導入多次相同的記錄嗎??

如果您導入的文件包含“外部ID”或“數據庫ID”列之一,則已經導入的記錄將被修改而不是創建。這非常有用,因為它允許您在兩次導入之間進行一些更改,同時多次導入相同的CSV文件。Odoo將負責創建或修改每個記錄,具體取決于它是否是新的。

此功能允許您使用Odoo的導入/導出工具,在您喜歡的電子表格應用程序中修改一批記錄。

如果我沒有為特定字段提供值會發生什么??

如果您在CSV文件中沒有設置所有字段,Odoo將為每個未定義字段分配默認值。但是,如果您在CSV文件中設置了空值字段,Odoo將在字段中設置空值,而不是分配默認值。

如何將SQL應用程序中的不同表格導出/導入到Odoo??

如果您需要從不同的表格中導入數據,您將需要重新創建屬于不同表格的記錄之間的關系。(例如,如果您導入公司和個人,您將需要重新創建每個人和他們所在公司之間的鏈接。)

要管理表之間的關系,您可以使用Odoo的“外部ID”功能。記錄的“外部ID”是該記錄在另一個應用程序中的唯一標識符。這個“外部ID”必須在所有對象的所有記錄中是唯一的,因此最好將這個“外部ID”前綴與應用程序或表的名稱一起使用(例如“company_1”,“person_1”而不是“1”)。

例如,假設您有一個SQL數據庫,其中包含兩個要導入的表:公司和人員。每個人都屬于一家公司,因此您需要重新創建人員與他所在公司之間的鏈接。(如果您想測試此示例,這里是一個 這樣的PostgreSQL數據庫的轉儲文件

我們將首先導出所有公司及其“外部ID”。在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;

此 SQL 命令將創建以下 CSV 文件:

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

要創建與公司相關聯的人員的CSV文件,我們將在PSQL中使用以下SQL命令:

> 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

它將生成以下CSV文件:

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

正如您在此文件中所看到的,Fabien和Laurence在Bigees公司(company_1)工作,而Eric則在Organi公司工作。人員和公司之間的關系是使用公司的外部ID完成的。我們不得不在“外部ID”前綴中加上表的名稱,以避免人員和公司之間的ID沖突(在原始數據庫中共享相同ID 1的person_1和company_1)。

生成的兩個文件可以直接導入Odoo,無需進行任何修改。導入這兩個CSV文件后,您將擁有4個聯系人和3個公司。(前兩個聯系人與第一個公司相關聯)。您必須先導入公司,然后再導入人員。

如何調整導入模板?

導入模板在導入工具中提供了導入最常見數據的模板(聯系人、產品、銀行對賬單等)。您可以使用任何電子表格軟件(Microsoft Office、OpenOffice、Google Drive等)打開它們。

如何自定義文件?

  • 刪除您不需要的列。我們建議不要刪除 ID 列(請參見下面的原因)。

  • 通過向下拖動ID序列,為每個記錄設置唯一的ID。

    ../../_images/dragdown.gif
  • 當您添加新列時,如果其標簽不符合系統中任何字段,則Odoo可能無法自動映射它。如果是這樣,請使用搜索找到相應的字段。

    ../../_images/field_list.png

    然后,在您的導入模板中使用您找到的標簽,以便在您下次嘗試導入時立即使其正常工作。

為什么需要一個“ID”列?

ID (外部ID)是行項目的唯一標識符??梢允褂靡郧败浖械腎D來簡化轉換到Odoo的過程。

在導入時設置ID并非強制要求,但在許多情況下會有所幫助:

  • 更新導入:您可以多次導入相同的文件而不會創建重復項;

  • 導入關聯字段(見下文)。

如何導入關聯字段?

一個Odoo對象總是與許多其他對象相關聯(例如,產品與產品類別、屬性、供應商等相關聯)。要導入這些關系,您需要首先從它們自己的列表菜單中導入相關對象的記錄。

您可以使用相關記錄的名稱或其ID來完成此操作。當兩個記錄具有相同的名稱時,需要使用ID。在這種情況下,在列標題的末尾添加“/ ID”(例如,對于產品屬性:Product Attributes / Attribute / ID)。