Migrating from Zim 4.x to Zim 7.x on Different OSes

Migrating a database from version Zim 4.x to Zim 7.x could also be achieved using ZIMSAVE (Zim 4.x) and ZOMIMPORT (Zim 7.x) to export the definitions of the data dictionary, plus tables with data and relationships with fields.

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:

  1. Executar o utilitário ZIMSAVE no prompt do Zim 4.x da base de dados original

  2. Inicializar base de dados em Zim 7.x

  3. Copiar arquivos DT4, ENT e REL gerados na base Zim 4.x para o diretório da base de dados nova Zim 7.x

  4. Copiar arquivos de programas da base Zim 4.x para o diretório correspondente na base de dados nova Zim 7.x

  5. 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)

  6. 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.

  7. Corrijir os problemas encontrados (caso tenham ocorrido erros na criação)

  8. Compilar todos programas (conforme sua necessidade de uso)

  9. Verificar se ocorreram erros de compilação

  10. Corrijir os erros encontrados (caso tenham ocorrido erros na compilação)

  11. Testar a aplicação.

  12. 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 %%