Como migrar para o Drupal 8 de uma fonte SQL em 6 etapas simples

Publicados: 2020-11-24

Muito se tem falado sobre a importância e os benefícios de migrar para o Drupal 8. A migração do Drupal é a parte mais significativa de um fluxo de trabalho de desenvolvimento. Precisamos garantir que o conteúdo seja transferido perfeitamente, sem perder nenhuma informação e dados críticos do usuário. Verifique este guia completo para uma migração bem-sucedida do Drupal 7 para o Drupal 8.

Existem várias maneiras de migrar para o Drupal 8 usando várias fontes. Já escrevemos sobre como migrar de CSV para Drupal 8. Outras fontes incluem SQL, XML, JSON, etc. Neste blog, iremos discutir sobre como migrar para Drupal 8 usando SQL como fonte.

Migratiom

Por que SQL?

Embora a escolha da fonte de dados dependa em grande parte da fonte dos dados existentes que devem ser migrados, alguns dos outros motivos comuns para escolher a fonte SQL para uma migração Drupal 8 são:

  • É fácil escrever consultas para obter os dados necessários conectando-se ao banco de dados.
  • A migração dos dados de um servidor para outro será mais rápida do que qualquer outro método.
  • Reduz o uso de muitos módulos contribuídos.
  • Não há necessidade de exportação de dados de visualizações, que é usada para exportar dados CSV de visualizações de sites Drupal 7.
  • Não precisaremos do campo de senha do Views, que é usado para migrar informações confidenciais (senhas em hash), uma vez que estamos usando consulta de banco de dados.
  • Migrar o módulo CSV de origem também não é necessário, pois estamos usando a origem SQL.

Deixe o processo de migração começar!

Neste blog, estaremos migrando usuários para um site Drupal 8. A seguir estão as etapas que tomaremos para migrar para o Drupal 8 -
1. Crie um módulo customizado para a migração.
2. Faça referência ao banco de dados de origem.
3. Defina o YML de migração e mapeie os campos identificados do Drupal.
4. Crie um plugin de origem para migração.
5. Processe campos de valor único, vários valores e endereço.
6. Execute a migração usando a ferramenta de linha de comando drush.

Etapa 1: Crie um módulo personalizado para a migração do Drupal 8.

Primeiro, vamos criar um módulo customizado conforme você cria no Drupal 8. Verifique este blog detalhado para a criação de módulos customizados no Drupal 8. Aqui estamos criando um módulo denominado “ migração de funcionário da empresa ”. A estrutura do módulo é a seguinte:

módulo customizado

company_employee_migrate.info.yml: Consiste em informações básicas sobre o módulo e suas dependências.

company_employee_migrate.install: será usado para escrever scripts PHP que devem ser acionados durante a instalação e desinstalação do módulo. Em nosso caso, estamos excluindo a configuração de migração quando o módulo é desinstalado. Veja a imagem abaixo para o script.

Banco de dados fonte

company_employee_migrate.module: será usado para definir os ganchos gerais para o site. Estas são as coisas iniciais necessárias para o módulo. Explicaremos o restante nas próximas etapas.

Etapa 2: Referência ao banco de dados de origem

Em seguida, precisamos configurar o banco de dados de origem de onde estamos extraindo os dados. Atualize o arquivo settings.php para o seu site Drupal movendo-se para webroot -> sites -> default -> settings.php .

Adicione a nova conexão de banco de dados abaixo da conexão padrão, conforme mostrado na captura de tela abaixo. “ Migrar ” é a chave para o banco de dados de origem.

Módulo Drupal

Etapa 3: definir o YML de migração e mapear os campos do Drupal.

Agora, precisamos identificar os campos que queremos migrar e mapear esses campos no yml de migração. Neste exemplo, estamos migrando ID de usuário, nome de usuário, senha, e-mail, status, data e hora de criação, nome, sobrenome, função, endereço postal, etc.

Após a identificação dos campos, precisamos definir a migração em migrate_plus.migration.company_employee.yml . Agora vamos dar uma olhada mais de perto na migração yml e seus mapeamentos.

Migração YML e mapa

id: id único para o yml de migração.

rótulo: nome de exibição para a migração.

migration_group: nome do grupo de migração.

source: Annotation Nome do plugin de origem de migração. Isso será definido na anotação @MigrateSource em src / Plugin / migrate / source / CompanyEmployee.php .

destino: nome do plugin de destino da migração. Neste caso, é entity: user, pois estamos migrando a entidade de usuário.

processo: Em processo, estaremos mapeando os campos do Drupal com os campos de origem. Os valores do lado esquerdo são nomes de máquina de campo e os valores do lado direito são os nomes de campo que passamos do plugin de origem.

migration_dependencies: esta é uma chave opcional. Isso será usado apenas se houver alguma dependência de outras migrações.

Etapa 4: crie um plug-in de origem para a migração

O plugin de origem de migração é o coração da migração SQL. Abaixo está a explicação detalhada para o plugin de origem.

  • O plugin fonte pode ser criado em src / Plugin / migrate / source / CompanyEmployee.php
  • O namespace será Drupal \ company_employee_migrate \ Plugin \ migrate \ source .
  • As anotações @MigrateSource incluem a id do plugin de origem que mapeamos na definição de migração.
  • Aqui, estamos estendendo a classe Abstract SqlBase fornecida pelo módulo de migração principal.

Veja a captura de tela abaixo para referência.

plugin de origem para migração

O plugin de origem deve implementar os três métodos a seguir -

query (): Isso retornará os dados dos campos de origem conectando-se ao banco de dados de origem. Veja a captura de tela abaixo que retornará os dados do campo onde o ID do usuário é maior que 0 e o e-mail do usuário termina com “@ phyins.com”.

plugin de origem para migração


fields (): Este método retornará os campos disponíveis na fonte. Abaixo, adicionei o trecho de código para a lista de campos disponíveis junto com baseFields ().

campos de base

getIds () : este método retornará um ID exclusivo para a linha de origem. O código a seguir retornará um ID de usuário do tipo inteiro, pois uid será exclusivo para cada usuário.

Módulo Drupal

Além desses métodos mencionados acima, também temos:

prepareRow (): Este método será chamado uma vez para cada linha. Estamos carregando os dados aqui de diferentes tabelas e processos de acordo com a necessidade. Qualquer propriedade que criarmos usando $ row-> setSourceProperty estará disponível na etapa do processo. Estaremos usando a consulta Drupal 8 DB para obter os dados em prepareRow () .

baseFields (): Este conterá um array de campos básicos de “users_field_data ” que podem ser usados ​​pelo método query () . Encontre o código na imagem abaixo.

drupal 8 migrar

Etapa 5: processar campos de valor único, vários valores e endereço.

No Drupal, temos diferentes tipos de campos e o processamento de alguns campos pode ser um pouco complicado para os desenvolvedores durante a migração de conteúdo. Eu adicionei os snippets de código para alguns campos abaixo:

Campos de valor único: Esses campos incluem campos de texto, campos booleanos, e-mail, etc. Encontre o trecho de código abaixo para obter um campo de valor único; aqui o field_first_name pode ser definido como abaixo.

Valor único de processo


Campos de vários valores: Esses campos incluem funções de usuário, funções de trabalho, campos de seleção de vários valores, caixas de seleção, etc. Para um campo de vários valores, precisamos retornar uma matriz associativa. Encontre abaixo o trecho de código para o campo “funções”.

Migração


Campos de endereço: Migrar o campo de endereço fornecido pelo módulo de endereço será um pouco diferente de migrar outros campos. Precisamos pré-processar os dados consultados em uma matriz associativa com as chaves apropriadas, conforme mostrado abaixo para field_mailing_address .

Migração


Agora tudo pronto para executar a migração instalando o módulo company_employee_migrate no site Drupal 8.

Etapa 6: execute a migração usando a ferramenta de linha de comando drush

Finalmente, estamos prontos para nossa migração SQL. Para executar a migração, precisamos instalar o drush (se você ainda não o estiver usando).

Lista de comandos drush úteis para migração Drupal:

drush migrate-status: Isso retornará o status da migração com detalhes.

migração usando drush

drush migrate-import migration_id: Isso importará os dados da fonte para o site.

migração drush

drush migrate-reset-status migration_id: Se a execução do script foi interrompida ou pausada, o status da migração será exibido como “Importando”. Este comando irá redefinir o status da migração para “Idle” para que possamos prosseguir com a importação da migração.

migração drush

drush migrate-rollback migration_id: será usado para retornar ao estado anterior.

migração drush