Drupal 8/9의 CSV 파일에서 데이터 마이그레이션

게시 됨: 2022-02-16

CSV 파일에서 Drupal 데이터베이스로 데이터를 마이그레이션하는 프로세스는 Drupal의 통합 Migrate API와 세 가지 추가 사용자 정의 모듈(Migrate Source CSV, Migrate Plus 및 Migrate Tools)을 통해 수행할 수 있습니다.

이를 ETL(추출 - 변환 - 로드) 프로세스라고 하며, 첫 번째 단계에서 한 소스에서 데이터를 가져오고 두 번째 단계에서 변환한 다음 마지막으로 세 번째 단계에서 Drupal 데이터베이스의 대상으로 로드합니다.

이 튜토리얼에서는 도서관 데이터베이스를 위한 12개의 책 노드 생성에 대해 설명합니다. 방법을 배우려면 계속 읽으십시오!

Drupal 8/9의 CSV 파일에서 데이터 마이그레이션

1단계 - Drush 및 필수 모듈 설치

Drupal에서 마이그레이션을 실행하려면 Drush가 필요합니다. Drush는 Drupal 모듈이 아니라 Drupal 명령을 실행하기 위한 명령줄 인터페이스입니다. 최신 버전의 Drush를 설치하려면,

  • 시스템의 터미널 응용 프로그램을 엽니 다.
  • /web 디렉토리 외부에 커서를 놓습니다 .
  • 유형: 작곡가는 drush/drush를 필요로 합니다 .

이것은 Drupal 설치의 vendor/bin/drush 디렉토리 안에 Drush를 설치합니다. 하지만 drush 명령어를 실행하고 싶을 때마다 drush 대신에 vendor/bin/drush 를 입력하는 것은 번거롭습니다.

Drush 런처를 사용하면 프로젝트별로 각 Drupal 설치의 특정 Drush 버전을 실행할 수 있습니다.

이게 왜 말이 되나요?

프로젝트마다 요구 사항이 다르며 특정 Drush 버전은 종속성 문제를 방지하는 데 도움이 됩니다. 일부 기여 모듈은 최신 버전의 Drush에서 제대로 작동하지 않을 수 있습니다.

OSX 및 Windows 시스템에 대한 특정 지침은 https://github.com/drush-ops/drush-launcher#installation---phar에서 찾을 수 있습니다.

Linux 시스템의 경우:

  • 다음을 입력 하여 GitHub에서 drush.phar 라는 파일을 다운로드합니다.

wget -O drush.phar
https://github.com/drush-ops/drush-launcher/releases/latest/download/drush.phar

  • 다음을 입력 하여 파일을 실행 가능하게 만드십시오: chmod +x drush.phar
  • 다음을 입력 하여 .phar 파일을 $PATH 로 이동하고 Drush를 전역 명령으로 실행합니다. sudo mv drush.phar /usr/local/bin/ drush

이제 마이그레이션을 수행하는 데 필요한 기여 모듈을 설치할 차례입니다.

  • 다음을 입력 합니다.

composer require drupal/migrate_tools
composer require drupal/migrate_source_csv


Drupal 8/9의 CSV 파일에서 데이터 마이그레이션 Composer가 모듈 다운로드를 완료하면

  • 브라우저에서 Drupal 백엔드를 엽니 다.
  • 확장 클릭
  • Migrate , Migrate Plus , Migrate 도구Migrate Source CSV 사용
  • 설치를 클릭하십시오

Drupal 8/9의 CSV 파일에서 데이터 마이그레이션


2단계 - ETL 프로세스에 대한 추가 정보

데이터 추출, 변환 및 로드 프로세스는 .yml 파일에서 마이그레이션을 정의한 다음 Drush 명령으로 실행하여 수행할 수 있으므로 Drupal 데이터베이스가 올바르게 채워질 수 있습니다.

주의해야 할 몇 가지 중요한 사실이 있습니다.

  1. 각 단계는 Drupal 플러그인을 통해 수행됩니다.
  2. 프로세스의 첫 번째 단계(소스 정의 즉, Extract)와 마지막 단계(대상 정의, 즉, 로드)에서 하나의 플러그인만 사용할 수 있습니다.
    • 즉, 하나의 소스(CSV 파일, JSON 피드 등)에서만 데이터를 가져와서 특정 엔터티 번들(예: 기사, 페이지, 사용자 정의 콘텐츠 유형, 사용자 또는 구성 엔터티도 마찬가지입니다.
  3. Drupal에서 예상하는 형식과 일치하도록 데이터를 모델링하는 데 필요한 만큼 플러그인을 사용할 수 있습니다.
  4. Drupal에는 기본적으로 정의 파일 내에서 사용할 수 있는 소스/프로세스/대상 플러그인 목록이 있습니다.

모든 소스 플러그인 목록을 보려면,

  • 터미널 창을 엽니 다.
  • 다음을 입력 합니다.

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

그 목록은 조금 더 깁니다. 프로세스 단계에서 필요한 만큼 플러그인을 사용할 수 있다는 것을 기억하십시오.

모든 대상 플러그인 목록을 보려면

  • 유형 :

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


"

주의 : csv 플러그인은 이미 Migrate Source CSV 모듈을 활성화했기 때문에 존재합니다.

모든 프로세스 플러그인 목록을 보려면,

  • 다음을 입력 합니다.

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

그 목록은 조금 더 깁니다. 프로세스 단계에서 필요한 만큼 플러그인을 사용할 수 있다는 것을 기억하십시오.

주의: csv 플러그인은 이미 Migrate Source CSV 모듈을 활성화했기 때문에 존재합니다. 모든 프로세스 플러그인 목록을 보려면 다음을 입력하십시오. drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.source')->getDefinitions()));" 그 목록은 조금 더 깁니다. 프로세스 단계에서 필요한 만큼 플러그인을 사용할 수 있다는 것을 기억하십시오. 모든 대상 플러그인 목록을 보려면 다음을 입력하십시오. drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.destination')->getDefinitions()));"

모든 대상 플러그인 목록을 보려면

  • 다음을 입력 합니다.

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


주의: csv 플러그인은 이미 Migrate Source CSV 모듈을 활성화했기 때문에 존재합니다. 모든 프로세스 플러그인 목록을 보려면 다음을 입력하십시오. drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.source')->getDefinitions()));" 그 목록은 조금 더 깁니다. 프로세스 단계에서 필요한 만큼 플러그인을 사용할 수 있다는 것을 기억하십시오. 모든 대상 플러그인 목록을 보려면 다음을 입력하십시오. drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.destination')->getDefinitions()));"

3단계 - 콘텐츠 유형 만들기

  • 구조 > 콘텐츠 유형 > 콘텐츠 유형 추가를 클릭 합니다.
  • '책' 콘텐츠 유형 만들기
  • 필드 저장 및 관리를 클릭 합니다.
  • CSV 파일의 제목 행을 사용 하여 필드 생성

나는 edition_number 열과 editor 열의 값을 연결할 것이므로 이 목적을 위해 데이터베이스에서 하나의 필드만 필요합니다.

주의: 필드 이름(컴퓨터 이름)은 CSV 파일의 열 이름과 정확히 일치할 필요는 없지만 최소한 유사한 단어와 연관시키는 것이 합리적입니다. 이는 프로세스 단계에서 필드 매핑을 용이하게 합니다.

Drupal 8/9의 CSV 파일에서 데이터 마이그레이션

제목 필드는 모든 Drupal 노드에 필수이므로 제목 필드를 만들 필요가 없습니다. 본문 필드를 그대로 두거나 삭제할 수 있습니다. 이는 특정 콘텐츠 유형으로 수행하려는 작업에 따라 다릅니다.


4단계 - 마이그레이션 정의 파일

소스 단계

  • 선호하는 코드 편집기 열기
  • 다음을 입력 합니다.

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: "'"

파일의 ID는 파일 이름과 일치합니다.

소스 섹션에서 Contrib 모듈 Migrate Source CSV의 csv 플러그인을 사용하고 있습니다.

header_row_count 옵션의 숫자 1은 열 제목의 값을 나타냅니다(모두 첫 번째 행에 배치됨).

ids 정의는 CSV 파일의 각 레코드에 대한 고유 식별자를 제공합니다. 이 경우에는 integer 유형의 id 열입니다. 모듈이 여기에 배열을 기대하고 있으므로 대괄호를 잊지 마십시오.

구분 기호인클로저 는 CSV 파일의 구조를 나타내며 제 경우에는 ";"으로 구분됩니다. 문자열은 "'" 작은따옴표로 묶습니다.

Drupal 8/9의 CSV 파일에서 데이터 마이그레이션

경로의 정의도 주목하십시오. 여기에 CSV 파일을 저장해야 Drupal이 데이터를 읽을 수 있습니다.

  • 터미널 응용 프로그램을 엽니 다.
  • 유형 :

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/

이렇게 하면:

  1. Drupal 설치의 공용 폴더 안에 csv라는 디렉토리를 만듭니다.
  2. 해당 디렉토리 안에 CSV 파일의 사본을 저장하십시오.
  3. 시스템의 모든 사람이 파일에 액세스할 수 있도록 합니다(소스 플러그인 포함).

프로세스 단계

여기에서 CSV 파일의 각 열을 콘텐츠 유형 의 필드와 매핑합니다.

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

field_editor 필드는 2개의 문자열( 에디터edition_number 열 내부의 값)을 연결한 결과입니다.
drupal_machine_name: csv_column_name 형식의 처음 5개 키/값 쌍은 변경을 수행하지 않고 CSV 레코드를 데이터베이스 필드에 매핑합니다.

구분 기호 옵션을 사용하면 두 문자열 사이에 구분 기호(이 경우 공백)를 설정할 수 있습니다.

default_value 플러그인은 이 정보가 소스 데이터에서 제공되지 않기 때문에 엔티티 유형을 정의하는 데 도움이 됩니다.

목적지 단계

이 프로세스의 마지막 부분은 대상 단계입니다.

destination:
plugin: entity:node

콘텐츠를 마이그레이션하고 있으며 각 레코드는 노드가 됩니다.


5단계 - 마이그레이션 실행

  • 구성 > 구성 동기화 > 가져오기 > 단일 항목 클릭
  • 드롭 다운에서 마이그레이션 을 선택합니다.
  • .yml 파일의 코드를 텍스트 영역에 붙여넣 습니다.
  • 가져오기 클릭

Drupal 8/9의 CSV 파일에서 데이터 마이그레이션

  • 확인을 클릭 하여 구성을 동기화합니다. "구성을 성공적으로 가져왔습니다"라는 메시지가 표시됩니다.
  • 터미널 애플리케이션으로 변경 합니다.
  • 다음을 입력 합니다.

drush migrate:import my_first_migration


Drupal 8/9의 CSV 파일에서 데이터 마이그레이션

이제 사이트의 콘텐츠를 확인할 수 있습니다.

Drupal 8/9의 CSV 파일에서 데이터 마이그레이션

CSV 파일에서 Drupal 8/9로 데이터를 마이그레이션하는 기본 원칙을 배웠습니다.

이미 보았듯이 마이그레이션 프로세스는 세부 사항에 주의를 기울여야 하므로 작은 실수로 전체 사이트가 손상될 수 있으므로 먼저 스테이징 서버에서 작업해야 합니다. 이 튜토리얼이 마음에 드셨기를 바랍니다.

읽어 주셔서 감사합니다!