我在SugarCRM有一个非常大的数据库。我正在考虑将该数据库迁移到Odoo。我怎样才能做到这一点?我可以看到SugarCRM和Odoo有完全不同的数据库模式,所以我不能想到将数据从SugarCRM直接迁移到Odoo。我将不得不手动导入Odoo中的条目。或者是否有可能以编程方式在Odoo中导入数据库?
答案 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工具手动完成。什么是合适的取决于源和目标模式的确切性质,它们的“理智”程度,它们的记录程度,它们的规范化程度等等。