将数据从SugarCRM迁移到Odoo?

时间:2014-08-16 17:57:05

标签: postgresql openerp etl sugarcrm odoo

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

2 个答案:

答案 0 :(得分:2)

我正在从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)

答案 1 :(得分:2)

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

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