CSV Import to Migrate Drupal 7 to 8 - Um guia completo

Publicados: 2020-02-11

A migração do Drupal 7 para o 8 é tudo menos enfadonho porque existem muitas maneiras de realizar uma migração! Dependendo da complexidade do projeto, podemos escolher a técnica que melhor se adapta a ele. O que vamos discutir neste blog é migrar o conteúdo e a configuração do Drupal 7 para o Drupal 8 usando um método de importação CSV.

CSV-importador-drupal

O Drupal fornece vários módulos para importar dados de diferentes fontes como JSON, XML e CSV. O sistema de API de migração de núcleo Drupal 8 oferece um conjunto completo de APIs que podem basicamente lidar com qualquer tipo de migração de uma versão anterior do Drupal para o Drupal 8.

Alguns trabalhos de preparação antes da migração do Drupal 7 para 8

Para migrar do Drupal 7 para o Drupal 8 usando a importação de CSV, precisaremos desses módulos.

Módulos Drupal 7 -

  • Exportação de dados de visualizações : Este módulo precisa ser instalado em nosso site Drupal 7. O módulo de exportação de dados de visualizações ajuda a exportar os dados no formato CSV.

  • Campo de senha de visualizações : Este módulo ajuda a migrar senhas que enviarão senhas em formato hash.

Módulos Drupal 8 -

  • Migrate - O módulo Drupal 8 Migrate ajuda a extrair dados de várias fontes para o Drupa 8.

  • Migrate Plus - Este módulo Drupal 8 ajudará na manipulação dos dados de origem importados

  • Migrate Drupal - Este módulo oferece suporte na migração de conteúdo e configurações para o Drupal 8.

  • Migrar CSV de origem - Este módulo oferece um plug-in de origem que pode migrar entidades e conteúdo para o Drupal 8 a partir de arquivos .csv.

  • Ferramentas de migração - este módulo Drupal 8 ajuda oferecendo ferramentas de IU / comandos Drush para gerenciar migrações.

  • Módulo de desenvolvimento de configuração - este módulo ajuda a importar arquivos de configuração para o Drupal 8.

Deixe a migração do Drupal 8 começar!

Primeiro, precisamos criar um módulo personalizado para nossa migração Drupal 8 . Vamos nomear este módulo como test_migrate . E sabemos que depois de criar um módulo personalizado , precisamos criar o arquivo info.yml .

csv1

A captura de tela acima mostra as chaves necessárias para info.yml .

Depois que o arquivo info.yml é criado, precisamos criar um grupo de migração para a migração. Este grupo de migração precisa ser criado no caminho: test_migration> config> install . O nome do grupo deve ser migrate_plus.migration_group.test_migration.yml .

csv2

A captura de tela acima mostra a estrutura de pastas para criar um grupo de migração.

Dentro do arquivo migrate_plus.migration_group.test_migration.yml , precisamos escrever a id, etiqueta e descrição para o grupo de migração que é mostrado na imagem abaixo.

csv3

Depois de criar o grupo de migração, precisamos instalar este grupo em nosso arquivo info.yml .

csv

Agora, vamos escrever um script de migração para os usuários, termo de taxonomia, parágrafos, tipos de conteúdo. Observe que você está migrando na mesma ordem, pois haverá um link entre essas entidades. Por exemplo, o conteúdo será criado por um usuário específico - então, primeiro precisamos migrar os usuários e, depois dessa taxonomia, o tipo de conteúdo.

Agora vamos escrever um script no arquivo yaml para a migração do usuário. Portanto, para escrever a migração do usuário, precisamos do arquivo yaml do usuário com o nome migrate_plus.migration.test_migration_users.yml e o script para migração é mostrado abaixo.

csv5

Estas são as chaves necessárias para a migração aqui do arquivo csv de origem, que precisamos migrar. Os arquivos csv devem ser colocados no caminho assets> csv> user.csv . Users.csv também é mostrado abaixo.

csv6

csv7

Caminho - indica o caminho para o arquivo csv.

header_row_count - Isso fornecerá a contagem de linhas, que é o cabeçalho de uma coluna específica.

Chaves - que devem ser exclusivas para cada linha.

Processo - neste, estamos mapeando arquivos csv para campos.

csv8

A imagem acima mostra o mapeamento entre os campos e csv. Aqui, o nome é o nome da máquina do campo do nome do usuário e o título é o título da coluna csv. Se tivermos vários dados para um único campo, usaremos delimitadores. Os usuários podem ter várias funções, nesse caso, escrevemos como mostrado na imagem acima.

As imagens são migradas escrevendo um plug-in personalizado. O plugin customizado pode ser escrito no caminho src> plugin> migrar> processo . Na imagem acima, você pode ver que user_image_import_process é um plugin personalizado escrito para migrar imagens de usuário.

csv9

Dentro de UserImportProcess.php estamos escrevendo a função que irá copiar a imagem e salvá-la no destino. O script é mostrado na imagem abaixo.

csv10

Para identificar onde as imagens devem ser salvas, escreveremos mais uma função ImageImportprocess . Nessa função, vamos mencionar o nome da máquina da imagem.

csv11

No arquivo info.yml dos usuários há uma seção de destino que indicará onde os dados migrados devem ser armazenados e qual é uma entidade. Isso está marcado na imagem abaixo.

csv12

Depois de criar o código para os usuários, precisamos escrever yaml para termos de taxonomia. Observe que, se você tiver apenas o campo de título em sua taxonomia, não precisa escrever um arquivo yaml separado. Se você tiver vários campos no termo de taxonomia, precisará escrever um arquivo yaml separado. Em termos de taxonomia, teremos tid como chave, pois tid será único para cada termo.

csv13

Depois disso, iremos migrar os parágrafos. Para isso, precisamos criar um arquivo yaml separado. O código a ser migrado é mostrado na imagem abaixo.

csv14

Por último, vamos migrar o tipo de conteúdo. O arquivo yaml para o tipo de conteúdo é mostrado no código abaixo.

rótulo : 'Migrar dados de tipo de conteúdo do arquivo csv'

migration_group : test_migration

fonte : id : test_migration_content

plugin : csv

# Caminho completo para o arquivo.

caminho : 'modules / custom / test_migrate / assets / csv / content.csv'

header_row_count : 1

chaves :

- nid

processo :

# Adicionando o mapeamento entre os campos e as colunas csv.

titulo : titulo

promover : promotion_to_front_page

pegajoso : pegajoso

field_display_name : display_name

field_marketing_tagline : marketing_tagline

field_taxonomy :

plugin : entity_lookup

fonte : Taxonomia

entity_type : taxonomy_term

bundle_key : vid

pacote : taxonomia

value_key : name

corpo / valor : corpo

corpo / formato :

plugin : default_value

default_value: "full_html"

field_paragraph :

- plugin : explodir

delimitador : "|"

fonte : fcid

- plugin : skip_on_empty

método : processo

- plugin : migration_lookup

migração : test_migration_paragraphs

no_stub : true

- plugin : iterador

processo :

target_id : '0'

target_revision_id : '1'

destino :

plugin : 'entidade: nó'

default_bundle : content

migração_dependências :

requerido :

- test_migration_paragraph

- test_migration_taxonomy

dependências : {}

Depois de escrever todos os arquivos yaml o test_migrate.info.yml migração irá conter a seguir instala.

csv15

Depois de concluir todas essas etapas, vá para o seu site e instale o módulo personalizado.

csv16

Em seguida, vá para o seu projeto no terminal e execute este comando “drush ms” para verificar o status da migração, conforme mostrado na imagem abaixo.

csv17

Para migrar, use o comando drush mim migration-id . Podemos ver o ID de migração na imagem acima.

Uma vez feito isso, se você verificar o status da migração, poderá ver o número de itens migrados.

csv18

Agora você pode observar que todo o conteúdo é migrado. Se houver algum erro na migração dos dados, o processo será encerrado nessa instância específica. Verifique o problema com esse conteúdo e, mais uma vez, você pode reiniciar a migração.

Coisas para lembrar

  • Se a migração for encerrada entre o processo, o status da migração será exibido como “importando”. Para alterar o status para inativo, você precisa executar o comando drush mrs migration-id . Em seguida, execute o comando drush mim migration-id

  • Se você quiser reverter o conteúdo migrado, execute o comando drush mr migration-id

  • Se você alterou algo no código após iniciar o processo de migração, certifique-se de executar o comando drush cdi test_migration . Este comando o ajudará a refletir as mudanças durante a migração. Uma vez feito isso, faça uma verificação completa em seu site para ver se todo o conteúdo foi migrado.