A migração da base de dados da versão Zim 4.x para Zim 7.x pode também ser feita utilizando o ZIMSAVE (Zim 4.x) e ZOMIMPORT (Zim 7.x) para exportar as definições do dicionário de dados, mais os dados das tabelas e relacionamentos com campos.
Este procedimento deve ser usado para migrar uma base Zim 4.x de um sistema operacional para outro que usará Zim 7.x. Por exemplo, migrar uma base de dados Zim 4.x rodando em HP-UX para uma base Zim 7.x rodando Linux.
Veja as etapas explicadas abaixo:
Executar o utilitário ZIMSAVE no prompt do Zim 4.x na base de dados original
Inicializar base de dados em Zim 7.x
Copiar arquivos DT4, ENT e REL gerados na base Zim 4.x para o diretório da base de dados nova (Zim 7.x)
Copiar arquivos de programas da base Zim 4.x para o diretório correspondente na base de dados nova (Zim 7.x)
Entrar em Zim da base de dados nova Zim 7.x, e executar os seguintes comandos:
> zomenable
> zomimport ;f DT4 (este comando pode ser demorado, dependendo do tamanho da base de dados)
Verificar se ocorreram erros na criação dos objetos – Para tal executar o comando:
> zomdiagnose ;d zomoutputdoc
Obs: Será gerado um documento externo de nome zomout.dat. Edite este arquivo e verifique os erros encontrados.
Corrijir os problemas encontrados (caso tenham ocorrido erros na criação)
Compilar todos programas (conforme sua necessidade de uso)
Verificar se ocorreram erros de compilação
Corrijir os erros encontrados (caso tenham ocorrido erros na compilação)
Testar a aplicação.
Para a migração dos dados, devemos executar o programa abaixo para fazer a carga de dados de cada Entidade/Relacionamento:
% Program to upload data generated using zimsave
%
% 4.20 -> 7.11 migration (different environments)
%
% Processing Ents
set information off
set membercount on
set memberinterval 1000
find all ents -> sents
let $subscript=$setcount
while (let $subscript=$subscript-1)>=0
let <1>=entname
let <2>=$concat("_e", $left("#<1>", 16))
out "Loading data ..." #<2>
find 1 #<1>
if $setcount = 0
add all #<1> from #<2>
let $page=$page+1
endif
set current sents
next
endwhile
% Processing Rels with Fields
find all rels relfields flds keep rels -> srels
let $subscript=$setcount
while (let $subscript=$subscript-1)>=0
let <1>=relname
let <2>=$concat("_r", $left("#<1>", 16))
out "Loading data ..." #<2>
find 1 #<1>
if $setcount = 0
add all #<1> from #<2>
endif
set current srels
next
endwhile
%% End of Program %%