Samuel, você poderia exportar o conteúdo do ZODB para um formato plain-text (CSV, XML, etc.) e daí importá-lo ao SGBDR. Um exemplo desse script segue abaixo: []s Alexandre J Denstone [EMAIL PROTECTED] def findContent(root, CacheMinimize):
meta = str(root.__class__).split()[2].split('.')[-1] print root.id, meta if hasattr(root, '_objects'): dict_objs = root._objects for dict_obj in dict_objs: objPath = '/'.join(root.getPhysicalPath()) + '/' + dict_obj['id'] obj = app.unrestrictedTraverse(objPath) try: # é necessário para 'recuperar' o objeto do ZODB obj.getId() try: # para testar se a classe tem o atributo if hasattr(root, 'titulo'): # para testar se é uma função ou propriedade if callable(root.titulo): titulo = root.titulo() else: titulo = root.titulo print titulo except: pass except: print "Unexpected error:", sys.exc_info()[0] print objPath pass # 'flush' do cache para liberar memória found += 1 if found % 1000 == 0: CacheMinimize() findContent(obj, CacheMinimize) swhome=r'C:/zclientintra' import sys sys.path.insert(0, '%s/lib/python' % swhome) sys.path.insert(1, '%s/bin/lib' % swhome) sys.path.insert(1, '%s/bin/DLLs' % swhome) sys.path.insert(2, '%s/bin/lib/plat-win' % swhome) sys.path.insert(3, '%s/bin/lib/win32' % swhome) sys.path.insert(4, '%s/bin/lib/win32/lib' % swhome) sys.path.insert(5, '%s' % swhome) sys.path.insert(6, '%s/bin/lib/win32com' % swhome) import Zope app = Zope.app() CacheMinimize = app.unrestrictedTraverse('Control_Panel/Database/manage_minimize') objs_path = ['/'] for obj_path in objs_path: findContent(app.unrestrictedTraverse(obj_path), CacheMinimize) get_transaction().commit() app._p_jar.close() Esta mensagem, incluindo seus anexos, pode conter informacao confidencial e/ou privilegiada. Se voce recebeu este e-mail por engano, nao utilize, copie ou divulgue as informacoes nele contidas. E, por favor, avise imediatamente o remetente, respondendo ao e-mail, e em seguida apague-o. Este e-mail possui conteudo informativo e nao transacional. Caso necessite de atendimento imediato, recomendamos utilizar um dos canais disponiveis: Internet Banking, Atendimento por Telefone ou agencia/representante de atendimento de sua conveniencia. Agradecemos sua colaboracao.