课程内容

可使用Excel (.xlsx) 或CSV (.csv) 格式导入Odoo业务对象的任何数据:联系人、产品、银行对账单、日记账条目、甚至订单!

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

系统提供了模板,你可以轻松移植你自己的数据。只需点击一次即可导入这些模板。数据映射已经完成。

  • 添加、删除或分类各行,使它们以最好的方式适应你的数据结构。
  • 建议不要删除 ID (原因见下节)
  • Set a unique ID to every single record by dragging down the ID sequencing.

  • 添加新一行时,如果这个行的标签与系统中任何字段均不匹配,Odoo可能不会自动将其映射。因此,请通过搜索查找对应的字段。

    然后使用你在导入模板上找到的标签,下次尝试导入的时候即可马上使用。

为了在不同的记录之间重新创建关系,需将初始应用中唯一的标识符映射到Odoo中的**ID**(外部ID)行。导入与第一个记录相链接的其他记录时,使用到这个唯一标识符的**XXX/ID** (XXX/外部 ID)。也可以通过名称找到这个记录,但如果有至少2条同名的记录,可能会影响你的查找。

如你需要稍后重新导入修改后的数据,也可用更新**ID**初始导入。这在任何时候都是一个不错的办法。

Odoo试图基于文件的前10行找到文件内部各行的区域类型。例如,有一个只包含数字的行,只有**整数**类型的区域才显示供你选择。尽管这种方式可能在多数情况下都很合适,但也有可能出错,或者你希望将这些行映射到默认没有规划的区域中。

这时,你只需选择**显示关系区域的区域(高级)**选项,为每一行选择完整的区域列表。

Odoo可自动检测特定列是否为日期,并且它还将从一组最常用的日期格式中猜测使用的日期格式。尽管这一过程可用于很多日期格式,但某些日期格式却无法识别。月和日倒置可能引起混淆;对于“01-03-2016”这样的格式,我们很难判断哪部分代表月份,哪部分代表日。

要查看Odoo从你的文档中找到了哪些日期格式,可以在文档选择器下方的 选项 中点击 日期格式 。如果格式错误,你可以用 ISO 8601 修正格式。

注解

If you are importing an excel (.xls, .xlsx) file, you can use date cells to store dates as the display of dates in excel is different from the way it is stored. That way you will be sure that the date format is correct in Odoo whatever your locale date format is.

是的,我们完全支持用带圆括号的数字代表负数,以及带货币符号的数字。Odoo还可自动识别你使用的千分位分隔符、小数点(稍后可在 选项 中修改)。如Odoo不能识别你使用的货币符号,则该字段不会被识别为数字,可能导致出错。

Examples of supported numbers (using thirty-two thousands as an example):

  • 32.000,00
  • 32000,00
  • 32,000.00
  • -32000.00
  • (32000.00)
  • $ 32.000,00
  • (32000.00 €)

不合要求的例子:

  • ABC 32.000,00
  • $ (32.000,00)

By default the Import preview is set on commas as field separators and quotation marks as text delimiters. If your csv file does not have these settings, you can modify the File Format Options (displayed under the Browse CSV file bar after you select your file).

Note that if your CSV file has a tabulation as separator, Odoo will not detect the separations. You will need to change the file format options in your spreadsheet application. See the following question.

如果你在电子表格应用程序中编辑和保存CSV文件,分隔符将应用你的计算机的地区设置。我们建议你使用OpenOffice或LibreOffice Calc,因为它们允许修改全部三个选项( ‘另存为’对话框 ‣ 勾选’编辑筛选设置’ ‣ 保存)。

微软Excel在保存时只允许修改编码( ‘另存为’对话框 ‣ 点击’工具’下拉列表‣ 编码选项卡)。

某些字段定义了与另一个对象的关系。例如,联系人的国家与“国家”对象记录关联。如果你想导入这样的字段,Odoo必须重新创建不同记录之间的关联。为帮助你导入这样的字段,Odoo提供了三种机制。你必须在每个要导入的字段中使用且仅使用一种机制。

例如,在引用一个联系人的国别时,Odoo提供了三种不同的字段供你导入:

  • 国家:国家的名称或代码
  • Country/Database ID: the unique Odoo ID for a record, defined by the ID postgresql column
  • Country/External ID: the ID of this record referenced in another application (or the .XML file that imported it)

对于比利时这个国家,你可以用以下三种方式中之一进行导入:

  • 国家: 比利时
  • Country/Database ID: 21
  • 国家/外部 ID: base.be

According to your need, you should use one of these 3 ways to reference records in relations. Here is when you should use one or the other, according to your need:

  • 使用国家:如果手动创建了CSV文件,则这是最快捷的导入方式。
  • 使用国家/数据库ID:你应该极少使用这一标识,主要是开发人员在使用。它的主要优势在于绝无冲突(你可能有多个相同的记录,但每个记录都有自己唯一的数据库ID)。
  • 使用国家/外部ID:从第三方应用中导入数据时,需要使用外部ID。

使用外部ID时,可利用带”外部ID”的行导入CSV文件,定义你导入的每条记录的外部ID号,然后引用类似”字段/外部ID”的记录。以下两个CSV文件是产品及目录的例子。

类别的CSV文件

产品的CSV文件

If for example you have two product categories with the child name “Sellable” (ie. “Misc. Products/Sellable” & “Other Products/Sellable”), your validation is halted but you may still import your data. However, we recommend you do not import the data because they will all be linked to the first ‘Sellable’ category found in the Product Category list (“Misc. Products/Sellable”). We recommend you modify one of the duplicates’ values or your product category hierarchy.

However if you do not wish to change your configuration of product categories, we recommend you use make use of the external ID for this field ‘Category’.

The tags should be separated by a comma without any spacing. For example, if you want your customer to be linked to both tags ‘Manufacturer’ and ‘Retailer’ then you will encode “Manufacturer,Retailer” in the same column of your CSV file.

CSV file for Manufacturer, Retailer

如果你先导入包含多个订单行的销售订单;你需要在CSV文件中为每个订单行保留一个特定行。第一个订单行将按相对于订单的信息在同一行导入。所有其他订单行都需要一个额外的行,它在字段中没有相对于的订单的任何信息。例如,你可以根据演示数据导入某些报价的``purchase.order_functional_error_line_cant_adpat.CSV``文件。

某些报价的文件

以下CSV文档显示如何用各自的采购订单行导入订单:

采购订单及各自的订单行

The following CSV file shows how to import customers and their respective contacts:

客户及各自的联系人

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

This feature allows you to use the Import/Export tool of Odoo to modify a batch of records in your favorite spreadsheet application.

如果没有在CSV文件中设定全部字段,Odoo会向未定义的字段分配默认值。但是如果你在CSV文件中设置了空值,Odoo会在该字段设置EMPTY值,不再分配默认的值。

If you need to import data from different tables, you will have to recreate relations between records belonging to different tables. (e.g. if you import companies and persons, you will have to recreate the link between each person and the company they work for).

如要管理表单之间的关系,你可使用Odoo的“外部ID”工具。一条记录的“外部ID”是指这条记录在其他应用程序中的唯一标识符。“外部ID”必须在所有对象的所有记录中具备唯一性,因此在“外部ID”前面加上应用程序或表单名称是很好的习惯。(如“company_1’”或“person_1”,而不仅仅只有“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)

首先会导出全部公司及其”外部 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;

This SQL command will create the following CSV file:

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

在PSQL环境中使用以下SQL命令为个人创建CSV文档并链接到对应的公司:

> 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之间出现冲突(person_1和company_1在原始数据库中的ID都是1)。

两个未经修改的文件已经就绪并导入Odoo。导入这两个CSV文件后,有4个联系人、3个公司(前两个联系人服务于同一公司)。你必须首先导入公司,然后导入人员。

视图
2 总浏览
2 成员的观点
0 公众浏览
动作
0 喜爱
0 不喜欢
0 注释
分享到社交网络
分享链接
通过邮件分享

登录 分享这个 webpage 通过电子邮件。