Drupal 7에서 8로 마이그레이션하기 위한 CSV 가져오기 - 완전한 가이드
게시 됨: 2020-02-11Drupal 7에서 8로의 마이그레이션은 마이그레이션을 수행하는 방법이 너무 많기 때문에 지루하지 않습니다! 프로젝트의 복잡성에 따라 가장 적합한 기술을 선택할 수 있습니다. 이 블로그에서 논의할 내용은 CSV 가져오기 방법을 사용하여 Drupal 7에서 Drupal 8로 콘텐츠 및 구성을 마이그레이션하는 것입니다.

Drupal은 JSON, XML 및 CSV와 같은 다양한 소스에서 데이터를 가져오기 위한 다양한 모듈을 제공합니다. Drupal 8 핵심 마이그레이션 API 시스템은 기본적으로 이전 버전의 Drupal에서 Drupal 8로의 모든 종류의 마이그레이션을 처리할 수 있는 전체 API 제품군을 제공합니다.
Drupal 7에서 8로 마이그레이션하기 전에 몇 가지 준비 작업
CSV 가져오기를 사용하여 Drupal 7에서 Drupal 8로 마이그레이션하려면 이러한 모듈이 필요합니다.
Drupal 7 모듈 -
보기 데이터 내보내기 : 이 모듈은 Drupal 7 사이트에 설치해야 합니다. 보기 데이터 내보내기 모듈은 데이터를 CSV 형식으로 내보내는 데 도움이 됩니다.
비밀번호 필드 보기 : 이 모듈은 비밀번호를 해시 형식으로 보낼 비밀번호를 마이그레이션하는 데 도움이 됩니다.
Drupal 8 모듈 -
마이그레이션 – Drupal 8 Migrate 모듈은 다양한 소스에서 Drupa 8로 데이터를 추출하는 데 도움이 됩니다.
Migrate Plus – 이 Drupal 8 모듈은 가져온 소스 데이터를 조작하는 데 도움이 됩니다.
Drupal 마이그레이션 – 이 모듈은 콘텐츠 및 구성을 Drupal 8로 마이그레이션하는 데 지원을 제공합니다.
소스 CSV 마이그레이션 – 이 모듈은 엔터티와 콘텐츠를 .csv 파일에서 Drupal 8로 마이그레이션할 수 있는 소스 플러그인을 제공합니다.
도구 마이그레이션 – 이 Drupal 8 모듈은 마이그레이션을 관리하기 위한 UI 도구/Drush 명령을 제공하여 도움을 줍니다.
구성 개발 모듈 – 이 모듈은 구성 파일을 Drupal 8로 가져오는 데 도움이 됩니다.
Drupal 8 마이그레이션을 시작하십시오!
먼저 Drupal 8 마이그레이션을 위한 사용자 지정 모듈을 만들어야 합니다 . 이 모듈의 이름을 test_migrate 로 지정 하겠습니다 . 그리고 우리는 사용자 정의 모듈 을 생성한 후 info.yml 파일 을 생성해야 한다는 것을 알고 있습니다.

위 스크린샷은 info.yml 에 필요한 키를 보여줍니다 .
info.yml 파일이 생성 되면 마이그레이션을 위한 마이그레이션 그룹을 생성해야 합니다. 이 마이그레이션 그룹은 test_migration > config > install 경로에 생성 해야 합니다. 그룹 이름은 migrate_plus.migration_group.test_migration.yml 이어야 합니다 .

위 스크린샷은 마이그레이션 그룹을 생성하기 위한 폴더 구조를 보여줍니다.
migrate_plus.migration_group.test_migration.yml 파일 내에서 아래 스크린샷에 표시된 마이그레이션 그룹에 대한 id, 레이블 및 설명을 작성해야 합니다.

마이그레이션 그룹을 만든 후 info.yml 파일 에 이 그룹을 설치해야 합니다.

이제 사용자, 분류 용어, 단락, 콘텐츠 유형에 대한 마이그레이션 스크립트를 작성할 것입니다. 이러한 엔터티 간에 링크가 있으므로 동일한 순서로 마이그레이션한다는 점에 유의하십시오. 예를 들어 콘텐츠는 특정 사용자가 생성하므로 먼저 사용자를 마이그레이션하고 해당 분류 후에 콘텐츠 유형을 마이그레이션해야 합니다.
이제 사용자 마이그레이션을 위해 yaml 파일에 스크립트를 작성해 보겠습니다 . 따라서 사용자 마이그레이션을 작성하려면 migrate_plus.migration.test_migration_users.yml 이라는 이름의 사용자 yaml 파일이 필요합니다. 마이그레이션을 위한 스크립트는 아래와 같습니다.

마이그레이션해야 하는 소스 csv 파일의 마이그레이션에 필요한 키입니다. csv 파일은 assets > csv > user.csv 경로에 배치해야 합니다 . Users.csv 도 아래에 표시됩니다.


경로 - csv 파일의 경로를 나타냅니다.
header_row_count - 특정 열의 헤더인 행 수를 제공합니다.
키 - 모든 행에 대해 고유해야 합니다.
프로세스 - 여기에서 csv 파일을 필드에 매핑합니다.

위 이미지는 필드와 csv 간의 매핑을 보여줍니다. 여기서 name은 사용자 이름 필드의 머신 이름이고 title은 csv 열 제목입니다. 단일 필드에 여러 데이터가 있는 경우 구분 기호를 사용합니다. 위의 이미지와 같이 작성하는 경우 사용자는 여러 역할을 가질 수 있습니다.
이미지는 사용자 정의 플러그인을 작성하여 마이그레이션됩니다. 커스텀 플러그인은 src > plugin > migrate > process 경로에 작성할 수 있습니다 . 위 그림에서 user_image_import_process 는 사용자 이미지를 마이그레이션하기 위해 작성된 사용자 정의 플러그인 임을 알 수 있습니다.

UserImportProcess.php 내부 에 이미지를 복사하여 대상에 저장하는 함수를 작성하고 있습니다. 스크립트는 아래 이미지에 나와 있습니다.

이미지를 저장해야 하는 위치를 식별하기 위해 ImageImportprocess 함수를 하나 더 작성 합니다. 그 기능에서 우리는 이미지의 머신 이름을 언급할 것입니다.

사용자 info.yml 파일에는 마이그레이션된 데이터가 저장될 위치와 엔터티를 나타내는 대상 섹션이 있습니다. 이것은 아래 이미지에 표시되어 있습니다.

사용자를 위한 코드를 생성한 후 분류 용어에 대한 yaml을 작성해야 합니다. 분류 체계에 제목 필드만 있는 경우 별도의 yaml 파일을 작성할 필요가 없습니다. 분류 용어에 여러 필드가 있는 경우 별도의 yaml 파일을 작성해야 합니다. tid 는 각 용어에 대해 고유 하므로 분류학 용어로 tid 를 키로 사용합니다.

그런 다음 단락을 마이그레이션합니다. 이를 위해 별도의 yaml 파일을 생성해야 합니다. 마이그레이션할 코드는 아래 이미지와 같습니다.

마지막으로 콘텐츠 유형을 마이그레이션합니다. 콘텐츠 유형에 대한 yaml 파일은 아래 코드와 같습니다.
label : 'csv 파일에서 콘텐츠 유형 데이터 마이그레이션'
마이그레이션 _그룹 : 테스트_ 마이그레이션
소스 : 아이디 : test_migration_content
플러그인 : csv

# 파일의 전체 경로.
경로 : '모듈/커스텀/테스트_마이그레이션/자산/csv/content.csv'
header_row_count : 1
키 :
- 니드
프로세스 :
# 필드와 csv 열 간의 매핑을 추가합니다.
제목 : 제목
승격 : Promote_to_front_page
끈적끈적하다 : 끈적끈적하다
field_display_name : display_name
field_marketing_tagline : 마케팅 _태그라인
field_taxonomy :
플러그인 : entity_lookup
출처 : 분류학
entity_type : taxonomy_term
번들 키 : 비디오
번들 : 분류
value_key : 이름
본문/값 : 본문
본문/형식 :
플러그인 : default_value
default_value : "전체_html"
field_paragraph :
- 플러그인 : 폭발
구분 기호 : "|"
출처 : fcid
- 플러그인 : skip_on_empty
방법 : 프로세스
- 플러그인 : migration_lookup
마이그레이션 : test_migration_paragraphs
no_stub : 사실
- 플러그인 : 반복자
프로세스 :
target_id : '0'
target_revision_id : '1'
목적지 :
플러그인 : '엔티티:노드'
default_bundle : 콘텐츠
마이그레이션 _ 종속성 :
필수 :
- test_migration_paragraph
- test_migration_taxonomy
종속성 : { }
모든 yaml 파일을 작성한 후 마이그레이션 test_migrate.info.yml 에는 아래 설치 가 포함됩니다.

이 모든 단계를 마치면 사이트로 이동하여 사용자 정의 모듈을 설치하십시오.

그런 다음 터미널에서 프로젝트로 이동하여 이 "drush ms" 명령을 실행하여 아래 이미지와 같이 마이그레이션 상태를 확인합니다.

마이그레이션하려면 drush mim migration-id 명령을 사용하십시오 . 위 이미지에서 마이그레이션 ID를 볼 수 있습니다.
완료되면 마이그레이션 상태를 확인하면 마이그레이션된 항목의 수를 볼 수 있습니다.

이제 모든 콘텐츠가 마이그레이션되었음을 확인할 수 있습니다. 데이터 마이그레이션에 오류가 있는 경우 프로세스는 해당 특정 인스턴스에서 종료됩니다. 해당 콘텐츠의 문제를 확인한 다음 다시 한 번 마이그레이션을 다시 시작할 수 있습니다.
기억해야 할 사항
프로세스 사이에 마이그레이션이 종료되면 마이그레이션 상태가 "가져오기"로 표시됩니다. 상태를 유휴 상태로 변경하려면 drush mrs migration-id 명령을 실행해야 합니다 . 다음으로 drush mim migration-id 명령을 실행합니다.
마이그레이션된 콘텐츠를 롤백하려면 drush mr migration-id 명령을 실행하십시오.
마이그레이션 프로세스를 시작한 후 코드에서 변경한 사항이 있으면 drush cdi test_migration 명령을 실행해야 합니다 . 이 명령은 마이그레이션하는 동안 변경 사항을 반영하는 데 도움이 됩니다. 완료되면 사이트를 철저히 확인하여 모든 콘텐츠가 마이그레이션되었는지 확인하십시오.
