Migrar dados de um arquivo CSV no Drupal 8/9 - OSTraining

Publicados: 2022-06-29

O processo de migração de dados para um banco de dados Drupal a partir de um arquivo CSV pode ser realizado por meio da API Migrate integrada do Drupal e três módulos extras personalizados (Migrate Source CSV, Migrate Plus e Migrate Tools).

Isso é conhecido como o processo ETL (Extract – Transform – Load), no qual os dados são buscados de uma fonte na primeira etapa, transformados na segunda etapa e finalmente carregados em seu destino no banco de dados Drupal na terceira etapa.

Este tutorial explicará a criação de 12 nós de livro para um banco de dados de biblioteca. Continue lendo para saber como!

Passo # 1 - Instale o Drush e os módulos necessários

Para executar migrações no Drupal, precisamos do Drush. Drush não é um módulo Drupal, mas uma interface de linha de comando para executar comandos Drupal. Para instalar a versão mais recente do Drush,

  • Abra o aplicativo de terminal do seu sistema
  • Coloque o cursor fora do diretório /web .
  • Tipo: composer require drush/drush

Isso instalará o Drush dentro do diretório vendor/bin/drush de sua instalação do Drupal. No entanto, é complicado digitar vendor/bin/drush em vez de drush , toda vez que você deseja executar um comando drush.

O iniciador Drush torna possível executar a versão específica do Drush de cada instalação do Drupal por projeto.

Por que isso faz sentido?

Cada projeto tem requisitos diferentes, versões específicas do Drush ajudam a evitar problemas de dependência. Alguns módulos contrib podem não funcionar corretamente com a versão mais recente do Drush.

As instruções específicas para sistemas OSX e Windows podem ser encontradas aqui: https://github.com/drush-ops/drush-launcher#installation—phar

Para um sistema Linux:

  • Digite o seguinte para baixar o arquivo chamado drush.phar do GitHub:
 wget -O drush.phar https://github.com/drush-ops/drush-launcher/releases/latest/download/drush.phar

Isso baixa o arquivo chamado drush.phar do GitHub.

  • Digite o seguinte para tornar o arquivo executável: chmod +x drush.phar
  • Tipo : sudo mv drush.phar /usr/local/bin/ drush

Isso moverá o arquivo .phar para seu $PATH e executará o Drush como um comando global.

Agora é hora de instalar os módulos de contribuição necessários para realizar a migração.

  • Digite o seguinte:
 composer require drupal/migrate_tools composer require drupal/migrate_source_csv

Assim que o Composer terminar de baixar os módulos,

  • Abra o back-end do Drupal no seu navegador
  • Clique em Estender
  • Ativar Migrate , Migrate Plus , Migrate Tools e Migrate Source CSV
  • Clique em Instalar

Etapa # 2 - Mais sobre o processo de ETL

O processo de extração, transformação e carregamento de dados pode ser obtido definindo a migração em um arquivo .yml e, em seguida, executando-o com um comando Drush, para que o banco de dados Drupal possa ser preenchido corretamente.

Existem alguns fatos importantes a serem observados:

  1. Cada uma das etapas é realizada através de plugins Drupal.
  2. Você só pode usar um plugin na primeira etapa (definição da fonte, ou seja, Extrair) e um plugin na última etapa (definição de destino, ou seja, Carregar) do processo.
    • Em outras palavras, você só pode buscar dados de uma fonte (arquivo CSV, feed JSON etc.) e armazená-los no Drupal apenas em um pacote de entidade específico, por exemplo, Artigo, Página, um tipo de conteúdo personalizado, um usuário ou um entidade de configuração, também.
  3. Você tem permissão para usar quantos plugins forem necessários para modelar os dados para que correspondam ao formato esperado pelo Drupal.
  4. O Drupal tem por padrão uma lista de plugins de origem/processo/destino que podem ser usados ​​dentro do arquivo de definição.

Para ver uma lista de todos os plugins de origem,

  • Abra a janela do seu terminal
  • Tipo :
 drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.source')->getDefinitions()));"

Aviso : o plugin csv está lá porque já ativamos o módulo Migrate Source CSV.

Para ver uma lista de todos os plugins de processo,

  • Digite o seguinte:
 drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.source')->getDefinitions()));"

Essa lista é um pouco maior, lembre-se que você pode usar quantos plugins precisar na etapa do processo.

Para ver uma lista de todos os plugins de destino,

  • Digite o seguinte:
 drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.destination')->getDefinitions()));"


Etapa # 3 - Crie o tipo de conteúdo

  • Clique em Estrutura > Tipos de conteúdo > Adicionar tipo de conteúdo
  • Crie o tipo de conteúdo 'Livro'
  • Clique em Salvar e gerenciar campos
  • Use a linha de título do arquivo CSV para criar os campos

Vou concatenar os valores das colunas número_edição e editor, então preciso de apenas um campo no banco de dados para isso.

Atenção: os nomes dos campos (nomes das máquinas) não precisam corresponder exatamente aos nomes das colunas do arquivo CSV, mas faz sentido, pelo menos, relacioná-los com palavras semelhantes – isso facilita o mapeamento dos campos na etapa do processo.

O campo de title é obrigatório para cada nó Drupal, portanto, não há necessidade de criar um campo de título. Você pode deixar o campo do corpo intocado ou pode excluí-lo, depende do que você planeja fazer com seu tipo de conteúdo específico.


Etapa # 4 - O arquivo de definição de migração

Etapa de origem

  • Abra seu editor de código preferido
  • Digite o seguinte:
 id: my_first_migration label: Migrate terms from a CSV source source: plugin: csv path: public://csv/library.csv header_row_count: 1 ids: [id] delimiter: ';' enclosure: "'"

O id do arquivo corresponde ao seu nome.

Estamos usando o plugin csv do módulo contrib Migrate Source CSV na seção source.

O número 1 na opção header_row_count indica o valor dos títulos das colunas (todos são colocados na primeira linha).

A definição de ids fornece o identificador exclusivo para cada registro no arquivo CSV, neste caso, a coluna id , que é do tipo integer . Não se esqueça dos colchetes, pois o módulo está esperando um array aqui.

delimiter e enclosure referem-se à estrutura do arquivo CSV, no meu caso particular, ele é delimitado por “;” caracteres, enquanto as strings são colocadas entre aspas simples “'”.

Observe também a definição de um caminho. É aí que você deve colocar o arquivo CSV, para que o Drupal possa ler os dados dele.

  • Abra seu aplicativo de terminal.
  • Tipo :
 mkdir web/sites/default/files/csv cp /home/ path/to /library.csv web/sites/default/files/csv/ chmod -R 777 web/sites/default/files/csv/

Isso vai:

  1. crie um diretório chamado csv dentro da pasta pública de sua instalação do Drupal.
  2. coloque uma cópia do arquivo CSV dentro desse diretório.
  3. tornar o arquivo acessível a todos no sistema (isso inclui o plug-in de origem).

Etapa do processo

É aqui que mapeamos cada uma das colunas do arquivo CSV com os campos do tipo de conteúdo:

 process: title: title field_id: id field_author: author field_location: location field_availability: availability field_editor: plugin: concat source: - editor - edition_number delimiter: ' ' type: plugin: default_value default_value: book

Os primeiros 5 pares de chave/valor no formato drupal_machine_name: csv_column_name mapeiam os registros CSV para os campos do banco de dados sem realizar nenhuma alteração.

O campo field_editor será o resultado da realização da concatenação de 2 strings (os valores dentro das colunas editor e edition_number ).

A opção delimiter permite definir um delimitador entre ambas as strings, neste caso, um espaço em branco.

O plugin default_value nos ajuda a definir um tipo de entidade, pois essa informação não está disponível nos dados de origem.

Etapa de destino

A parte final deste processo é a etapa de destino.

 destination: plugin: entity:node

Estamos migrando o conteúdo e cada registro será um nó.


Etapa # 5 - Execute a migração

  • Clique em Configuração > Sincronização de configuração > Importar > Item único
  • Selecione Migração na lista suspensa
  • Cole o código do arquivo .yml na área de texto
  • Clique em Importar
  • Clique em Confirmar para sincronizar a configuração. Você receberá a mensagem “A configuração foi importada com sucesso”
  • Mude para o aplicativo do terminal.
  • Digite o seguinte:
 drush migrate:import my_first_migration

Agora você pode verificar o conteúdo do seu site.

Você aprendeu os princípios básicos da migração de dados de um arquivo CSV para o Drupal 8/9.

Como você já viu, o processo de migração requer atenção aos detalhes, portanto, certifique-se de trabalhar primeiro em um servidor de teste, pois um pequeno erro pode quebrar todo o site. Espero que tenham gostado deste tutorial.

Obrigado por ler!