У меня очень большая база данных в SugarCRM. Я думаю о переносе этой базы данных на Odoo. Как я могу это сделать? Я вижу, что SugarCRM и Odoo имеют совершенно разные схемы баз данных, поэтому я не могу думать о прямом переносе данных из SugarCRM в Odoo. Мне придется вручную импортировать записи в Odoo. Или есть возможность программно импортировать базу данных в Odoo?
Перенести данные из SugarCRM в Odoo?
Ответы (2)
Я работаю над миграцией с Joomla на Odoo. Joomla использует MySQL, как и SugarCRM. Я запустил скрипт Python, который выполняет запросы к MySQL (через MySQLdb
), а затем передает данные в Odoo через ERPpeek, который можно использовать как отдельно, так и в виде библиотеки.
С 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)
Вам нужна система извлечения-преобразования-загрузки, в которой вы берете данные в одной схеме, извлекаете их из БД, преобразуете их в соответствии с рядом ролей и загружаете в новую схему.
ETL можно выполнять вручную, с помощью пользовательских сценариев или с помощью специальных инструментов ETL, таких как Talend Studio, Pentaho Kettle и CloverETL. Что уместно, во многом зависит от точной природы схем источника и назначения, насколько они «нормальны», насколько хорошо они документированы, насколько они нормализованы и т. д.