如何开始
可使用Excel (.xlsx) 或CSV (.csv) 格式导入Odoo业务对象的任何数据:联系人、产品、银行对账单、日记账条目、甚至订单!
打开你想要移植的对象并点击**导入**。
系统提供了模板,你可以轻松移植你自己的数据。只需点击一次即可导入这些模板。数据映射已经完成。
如何使用模板
- 添加、删除或分类各行,使它们以最好的方式适应你的数据结构。
- 建议不要删除**ID** 1(原因见下节)
- 将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或LibreOfice Calc,因此这些软件支持你修改全部三个选项(位于保存为会话框>勾选’编辑过滤器设置’>保存)。
Microsoft 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文件是产品及目录的例子。
目录的CSV文档
产品的CSV文档
如果我有多对一的字段怎么做?
例如,你有两个带子名称的产品目录,”Sellable” (ie. “Misc. Products/Sellable” & “Other Products/Sellable”),你的确认被暂停了,但你仍然可以导入数据。不过我们建议你不要导入这些数据,因为它们可能都与产品目录列表 (“Misc. Products/Sellable”)中的第一个“可销售”目录相链接。我们建议你修改一个副本值或产品目录的层级。
不过,如果你不想更改产品目录的配置,我们建议你在“目录”字段使用外部ID。
如何导入一对多的关系(例如多个订单行对应一个销售订单)?
如你希望导入有多个订单行的销售订单,则每个订单行都需要在CSV文件中保留一个特定的列。第一个订单行可被导入到与订单信息相关的同一列中。每添加一行,都需要向与订单相关的空信息字段中增加相应的行。例如可以基于demo数据导入一些引用的purchase.order_functional_error_line_cant_adpat.CSV文件。
一些引用的文件
以下CSV文档显示如何用各自的采购订单行导入订单:
带不同采购行的采购订单
以下CSV文件显示如何导入顾客及其联系人:
顾客和其各自的联系人
我可以导入多次相同的记录吗?
如你导入了一个包含”外部 ID”或”数据库 ID行的文件,已经导入的记录就会被修改而不是新创建记录。这是非常有用的,因为它允许你在两次导入之间多次导入同一个CSV文件。Odoo还支持对任一记录的创建或修改(视新旧而定)。
此功能允许你使用Odoo的导入/导出工具修改批记录,非常适合电子表格应用。
如果没有为特别字段赋值会有什么后果?
如果没有在CSV文件中设定全部字段,Odoo会向未定义的字段分配默认值。但是如果你在CSV文件中设置了空值,Odoo会在该字段设置EMPTY值,不再分配默认的值。
如何从一个SQL应用中向Odoo导出/导入不同的表单?
如要从不同的表单中导入数据,应在各个记录间重新创建属于不同表单的关系(即:如你导入公司和人员数据,需要在每个人及其服务的公司间重新创建链接。)
可以使用Odoo的”外部ID”功能管理不同表单之间的关系。”外部ID”是其他应用中该记录的唯一标识符。这一”外部ID”对全部对象的任一记录都必须是独一无二的,因此非常适合用这一应用或表单的名称为”外部ID”打前缀。(如’company_1’, ‘person_1’,而不是‘1’)。
例如,假设你有一个带两个表单的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和Laurece都是Bigees公司(company_1)的员工,Eric为Organi公司服务。个人和公司间的关系用公司的外部ID表示。我们只能用表单名称做为”外部 ID”的前缀,而避免个人ID和公司ID的冲突(person_1 和 company_1在原始数据库中共用ID 1。)
两个未经修改的文件已经就绪并导入Odoo。导入这两个CSV文件后,有4个联系人、3个公司(前两个联系人服务于同一公司)。你必须首先导入公司,然后导入人员。