如何开始
可使用Excel (.xlsx) 或CSV (.csv) 格式导入Odoo业务对象的任何数据:联系人、产品、银行对账单、日记账条目、甚至订单!
打开要填充的对象的视图,然后单击 导入 。
系统提供了模板,您可以轻松地用自己的数据填充模板。 一键导入这些模板。 数据映射已经完成。
如何使用模板
- 添加、删除或分类各行,使它们以最好的方式适应你的数据结构。
- 建议不要删除 ID (原因见下节)。
- 向下拖动ID顺序,为每个记录设置唯一的ID。
添加新一行时,如果这个行的标签与系统中任何字段均不匹配,Odoo可能不会自动将其映射。因此,请通过搜索查找对应的字段。
然后使用你在导入模板上找到的标签,下次尝试导入的时候即可马上使用。
如何从其他应用程序中导入
为了在不同的记录之间重新创建关系,需将初始应用中唯一的标识符映射到Odoo中的 ID**(外部ID)行。导入与第一个记录相链接的其他记录时,使用到这个唯一标识符的 **XXX/ID (XXX/外部 ID)。也可以通过名称找到这个记录,但如果有至少2条同名的记录,可能会影响你的查找。
如你需要稍后重新导入修改后的数据,也可用更新 ID 初始导入。这在任何时候都是一个不错的办法。
我找不到想要映射的行的区域
Odoo试图基于文件的前10行找到文件内部各行的区域类型。例如,有一个只包含数字的行,只有 整数 类型的区域才显示供你选择。尽管这种方式可能在多数情况下都很合适,但也有可能出错,或者你希望将这些行映射到默认没有规划的区域中。
这时,你只需选择 显示关系区域的区域(高级) 选项,为每一行选择完整的区域列表。
在哪里修改数据导入格式?
Odoo可自动检测特定列是否为日期,并且它还将从一组最常用的日期格式中猜测使用的日期格式。尽管这一过程可用于很多日期格式,但某些日期格式却无法识别。月和日倒置可能引起混淆;对于“01-03-2016”这样的格式,我们很难判断哪部分代表月份,哪部分代表日。
要查看Odoo从你的文档中找到了哪些日期格式,可以在文档选择器下方的 选项 中点击 日期格式 。如果格式错误,你可以用 ISO 8601 修正格式。
注解
如你导入一个Excel(.xls, .xlsx)文件,可使用日期单元格存放日期(因为在Excel中日期的显示与存储方式不一致)。这样当你在Odoo中找到一个日期就可以确保它是正确的格式。
我可以输入带有货币符号的号码(例如:$32.00)吗?
是的,我们完全支持用带圆括号的数字代表负数,以及带货币符号的数字。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,因为它们允许修改全部三个选项(
)。微软Excel在保存时只允许修改编码(
)。数据库ID和外部ID的差别是什么?
某些字段定义了与另一个对象的关系。例如,联系人的国家与“国家”对象记录关联。如果你想导入这样的字段,Odoo必须重新创建不同记录之间的关联。为帮助你导入这样的字段,Odoo提供了三种机制。你必须在每个要导入的字段中使用且仅使用一种机制。
例如,在引用一个联系人的国别时,Odoo提供了三种不同的字段供你导入:
- 国家:国家的名称或代码
- 国家/数据库ID:用于记录唯一的Odoo ID,由postgresql 行定义。
- 国家/外部ID:其他应用(或导入的.XML文档)中引用的记录ID
对于比利时这个国家,你可以用以下三种方式中之一进行导入:
- 国家: 比利时
- 国家/数据库ID:21
- 国家/外部 ID: base.be
根据需要,你可以使用三种方式之一来引用关系中的记录。参照指引:
- 使用国家:如果手动创建了CSV文件,则这是最快捷的导入方式。
- 使用国家/数据库ID:你应该极少使用这一标识,主要是开发人员在使用。它的主要优势在于绝无冲突(你可能有多个相同的记录,但每个记录都有自己唯一的数据库ID)。
- 使用国家/外部ID:从第三方应用中导入数据时,需要使用外部ID。
使用外部ID时,可以使用 “外部ID” 列导入CSV文件,以定义要导入的每个记录的外部ID。 然后,您将能够使用诸如 “字段/外部ID” 之类的列来对该记录进行引用。 以下两个CSV文件为您提供了产品及其类别的示例。
如果一个字段有多个匹配项,该怎么办?
例如,如果您有两个产品类别,其子名称为“可售”(即“其他产品/可售产品”和“其他产品/可售产品”),则验证将暂停,但您仍可以导入数据。 但是,我们建议您不要导入数据,因为它们都将链接到“产品类别”列表中的第一个“可售商品”类别(“其他产品/可售商品”)。 我们建议您修改重复项之一的值或您的产品类别层次结构。
但是,如果您不想更改产品类别的配置,建议您在此“类别”字段中使用外部ID。
如何导入一对多的关系(例如多个订单行对应一个销售订单)?
如果你先导入包含多个订单行的销售订单;你需要在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数据库中有公司和人员两个需要导入的表单。每位人员属于一家公司,因此你必须重新创建人员与其所在公司之间的关联。(如你想测试本例,请使用:download:[UNKNOWN NODE problematic]PostgreSQL数据库的转储 <../../_static/example_files/database_import_test.sql>)
首先会导出全部公司及其”外部 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
在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个公司(前两个联系人服务于同一公司)。你必须首先导入公司,然后导入人员。