sexta-feira, 4 de fevereiro de 2011

migração de artigos entre instalações Joomla

Estamos fazendo a unificação de alguns sites Joomla e estamos nos preparando para transferir artigos de um site Joomla para outro.

Seguramente, a cópia copy-and-paste artigo a artigo está levando muito tempo e não parece ser a forma mais adequada considerando a boa quantidade de artigos que temos em nosso site.

A expectativa é de fazer a transferência dos arquivos pelos backups das tabelas MySQL que suportam as nossas instalações.

Tentando fazer isso, procuramos pelo Modelo de Dados das Tabelas do Joomla. Encontramos uma versão aqui. Continuarei à anotar os procedimentos aqui.

Backupearás. Isso não é brincadeira.... faça cópias backup na medida que você vai progredindo.... Ao final, pode jogar tudo fora, mas, durante o processo, mantenha cópias de tudo.

Ambiente de Desenvolvimento. Um restore do ambiente a receber os dados em local controlado ajuda no desenvolvimento da carga (backupeado do ambiente de origem dos dados). No meu caso, este ambiente é realmente providencial.

Versões dos Componentes. Em geral, as atualizações de versão dos componentes não modificam a estrutura das tabelas, mas para prevenir, procure garantir que os componentes envolvidos estejam na mesma versão. No meu caso, o JComments estava na versão 2.1.x enquanto no ambiente de destino ele estava na versão 2.2.x com diferenças na estrutura das tabelas. Um upgrade de versão no ambiente de origem, resolveu o nosso problema. Claro que os backups recomeçam novamente.

Compatibilização dos Dados. Os dados que estão chegando em geral irão se conflitar com os dados que já estão no ambiente de destino. Por exemplo, cada categoria recebeu um id (identificador) sequencial começando de 1 (um), nos dois ambientes, logo precisamos ajustar estes identificadores para que possam ser carregados. No meu caso, desloquei os diversos id (categoria, artigo, seção, etc) de 1000, somei 1000 ao id, usando o update do MySQL. Isso facilita a identificação dos itens que vieram nesta carga. Claro que usando o modelo de dados, fui ajustando as Chaves Externas nas diversas tabelas.

Ajustes no novo ambiente. Ajustes no novo ambiente em geral são necessários.... No meu caso, deixei para que os artigos fosse ligados a menu diretamente pelo painel de menus do ambiente de destino. A tentativa de construir os itens de menu diretamente sobre os dados do MySQL me pareceu muito onerosa.

Referências: