1

我在 SugarCRM 中有一个非常大的数据库。我正在考虑将该数据库迁移到 Odoo。我怎样才能做到这一点?我看到的是 SugarCRM 和 Odoo 有完全不同的数据库模式,所以我想不出直接将数据从 SugarCRM 迁移到 Odoo。我将不得不在 Odoo 中手动导入条目。或者有没有可能以编程方式在 Odoo 中导入数据库?

4

2 回答 2

3

我正在从 Joomla 迁移到 Odoo。Joomla 使用 MySQL,就像 SugarCRM 一样。我启动了一个 Python 脚本,它在 MySQL 上运行查询(通过MySQLdb),然后通过 ERPpeek 将数据获取到Odoo中,您可以单独使用它也可以将其用作库。

使用 ERPpeek,您可以轻松了解如何使用 Odoo 的数据结构。

从你能找到的最简单的数据开始是最方便的。

这是一些可以帮助您入门的代码。它没有按原样工作,但我认为这是一个有用的开始:

from erppeekinit import *
import MySQLdb


def get_dict_cursor():
    db = MySQLdb.connect(host="localhost",
                         user="odoo_import",
                         passwd="",
                         db="sugarcrm")

    # DictCursor returns mysql rows as dictionary {column_name:value, ...}
    return db.cursor(MySQLdb.cursors.DictCursor)


def mysql2odoo(table, model_name):
    model = odoo.model(model_name)
    dict_cur.execute("SELECT * FROM " + table)

    for row in dict_cur.fetchall():

        if model.browse([....  ...]):
            data = {'name': ...
            }
            object = model.create(data)
        else:
            print 'skipping already imported product: ' + row['name']

dict_cur = get_dict_cursor()

table, model = ('your_sugar_crm_table', 'the_odoo.table')
mysql2odoo(table, model)
于 2014-08-17T09:51:37.137 回答
2

您需要的是一个提取-转换-加载系统,您可以在一个模式中获取数据,从数据库中提取数据,根据一系列角色对其进行转换,然后将其加载到新模式中。

ETL 可以通过自定义脚本或 Talend Studio、Pentaho Kettle 和 CloverETL 等专用 ETL 工具手动完成。什么是合适的在很大程度上取决于源模式和目标模式的确切性质、它们的“理智”程度、它们的记录程度、它们的规范化程度等。

于 2014-08-17T13:05:04.327 回答