Drupal 7から8に移行するためのCSVインポート-完全ガイド

公開: 2020-02-11

Drupal 7から8への移行は、移行を実行する方法が非常に多いため、退屈ではありません。 プロジェクトの複雑さに応じて、プロジェクトに最適な手法を選択できます。 このブログで説明するのは、CSVインポート方法を使用してコンテンツと構成をDrupal7からDrupal8に移行することです。

CSV-importer-drupal

Drupalは、JSON、XML、CSVなどのさまざまなソースからデータをインポートするためのさまざまなモジュールを提供します。 Drupal 8コア移行APIシステムは、以前のバージョンのDrupalからDrupal8へのあらゆる種類の移行を本質的に処理できるAPIのスイート全体を提供します。

Drupal7から8への移行前の準備作業

CSVインポートを使用してDrupal7からDrupal8に移行するには、これらのモジュールが必要です。

Drupal7モジュール-

  • ビューデータのエクスポート:このモジュールは、Drupal7サイトにインストールする必要があります。 ビューデータエクスポートモジュールは、CSV形式でデータをエクスポートするのに役立ちます。

  • ビューパスワードフィールド:このモジュールは、ハッシュ形式でパスワードを送信するパスワードの移行に役立ちます。

Drupal8モジュール-

  • 移行– Drupal 8 Migrateモジュールは、さまざまなソースからDrupa8にデータを抽出するのに役立ちます。

  • Migrate Plus –このDrupal 8モジュールは、インポートされたソースデータの操作に役立ちます

  • Drupalの移行–このモジュールは、コンテンツと構成をDrupal8に移行するためのサポートを提供します。

  • ソースCSVの移行–このモジュールは、エンティティとコンテンツを.csvファイルからDrupal8に移行できるソースプラグインを提供します。

  • 移行ツール–このDrupal 8モジュールは、移行を管理するためのUIツール/ Drushコマンドを提供することで役立ちます。

  • 構成開発モジュール–このモジュールは、構成ファイルをDrupal8にインポートするのに役立ちます。

Drupal 8の移行を始めましょう!

まず、 Drupal8移行用のカスタムモジュールを作成する必要があります このモジュールにtest_migrateという名前を付けましょう また、カスタムモジュール作成した後 info.ymlファイルを作成する必要があることもわかっています。

csv1

上のスクリーンショットは、 info.ymlに必要なキーを示しています

info.ymlファイルが作成されたら、移行用の移行グループを作成する必要があります。 この移行グループは、次のパスに作成する必要があります: test_migration> config> install グループの名前はmigrate_plus.migration_group.test_migration.ymlである必要があります。

csv2

上のスクリーンショットは、移行グループを作成するためのフォルダー構造を示しています。

次のスクリーンショットに示すように migrate_plus.migration_group.test_migration.ymlファイルに、移行グループのID、ラベル、および説明を書き込む必要があります。

csv3

移行グループを作成したら、このグループをinfo.ymlファイルにインストールする必要があります。

csv

次に、ユーザー、分類用語、段落、コンテンツタイプの移行スクリプトを作成します。 これらのエンティティ間にリンクがあるため、同じ順序で移行することに注意してください。 たとえば、コンテンツは特定のユーザーによって作成されるため、最初にユーザーを移行し、その後、コンテンツタイプを移行する必要があります。

それでは、ユーザー移行用のスクリプトをyamlファイルに記述しましょう したがって、ユーザー移行を作成するには、 migrate_plus.migration.test_migration_users.ymlという名前のユーザーyamlファイルが必要です。 移行のスクリプトを以下に示します。

csv5

これらは、移行する必要があるここでのソースcsvファイルの移行に必要なキーです。 Csvファイルは、パスアセット> csv> user.csvに配置する必要があります Users.csvも以下に表示されます。

csv6

csv7

パス-csvファイルのパスを示します。

header_row_count-これは、特定の列のヘッダーである行数を示します。

キー-すべての行で一意である必要があります。

プロセス-これでは、csvファイルをフィールドにマッピングしています。

csv8

上の画像は、フィールドとcsvの間のマッピングを示しています。 ここで、nameはユーザー名フィールドのマシン名であり、titleはcsv列のタイトルです。 1つのフィールドに複数のデータがある場合は、区切り文字を使用します。 ユーザーは複数の役割を持っている可能性があります。その場合、上の画像に示すように記述します。

カスタムプラグインを作成することにより、画像が移行されます。 カスタムプラグインは、パスsrc>プラグイン>移行>プロセスで記述できます 上の図では、 user_image_import_processがユーザーイメージを移行するために作成されたカスタムプラグインであることがわかります。

csv9

UserImportProcess.php内に、画像をコピーして宛先に保存する関数を記述しています。 スクリプトは下の画像に示されています。

csv10

画像を保存する場所を特定するために、もう1つの関数ImageImportprocessを記述します。 その関数では、イメージのマシン名について説明します。

csv11

ユーザーのinfo.ymlファイルには、移行されたデータが保存される場所とエンティティを示す宛先セクションがあります。 これは下の画像でマークされています。

csv12

ユーザー向けのコードを作成したら、分類用語のyamlを作成する必要があります。 分類法にタイトルフィールドしかない場合は、別のyamlファイルを作成する必要がないことに注意してください。 分類用語に複数のフィールドがある場合は、別のyamlファイルを作成する必要があります。 TIDは、各用語に対して一意になりますので、分類学の用語では、我々は、キーとしてTIDています

csv13

この後、段落を移行します。 そのためには、別のyamlファイルを作成する必要があります。 移行するコードを次の画像に示します。

csv14

最後に、コンテンツタイプを移行しましょう。 コンテンツタイプのyamlファイルを以下のコードに示します。

label 'csvファイルからコンテンツタイプデータを移行します'

移行グループ:test_migration

ソース id :test_migration_content

プラグイン:csv

#ファイルへのフルパス。

パス 'modules / custom / test_migrate / Assets / csv / content.csv'

header_row_count :1

キー

--nid

プロセス

#フィールドとcsv列の間にマッピングを追加します。

タイトル:タイトル

プロモート:promoted_to_front_page

スティッキー:スティッキー

field_display_name :display_name

field_marketing_tagline :marketing_tagline

field_taxonomy

プラグイン:entity_lookup

出典:分類法

entity_type :taxonomy_term

bundle_key :vid

バンドル:分類法

value_key :名前

本体/値:本体

本文/フォーマット

プラグイン:default_value

default_value "full_html"

field_paragraph

-プラグイン:爆発

区切り文字 "|"

ソース:fcid

-プラグイン:skip_on_empty

メソッド:プロセス

-プラグイン:migration_lookup

移行:test_migration_paragraphs

no_stub :true

-プラグイン:イテレータ

プロセス

target_id '0'

target_revision_id '1'

目的地

プラグイン 'entity:node'

default_bundle :コンテンツ

migration_dependencies

必須

--test_migration_paragraph

--test_migration_taxonomy

依存関係:{}

すべてのyamlファイルを書き込んだ後、移行test_migrate.info.ymlは以下のインストール含まれます。

csv15

これらの手順をすべて完了したら、サイトに移動してカスタムモジュールをインストールします。

csv16

次に、ターミナルでプロジェクトに移動し、この「drush ms」コマンドを実行して、次の図に示すように移行ステータスを確認します。

csv17

移行するには、コマンドdrush mimmigration-idを使用します。 上の画像で移行IDを確認できます。

完了したら、移行ステータスを確認すると、移行されたアイテムの数を確認できます。

csv18

これで、すべてのコンテンツが移行されていることを確認できます。 データ移行でエラーが発生した場合、プロセスはその特定のインスタンスで終了します。 そのコンテンツの問題を確認してから、もう一度移行を再開できます。

覚えておくべきこと

  • プロセスの途中で移行が終了した場合、移行のステータスは「インポート中」と表示されます。 ステータスをアイドルに変更するには、コマンドdrush mrsmigration-idを実行する必要があります 次に、コマンドdrush mimmigration-idを実行します

  • 移行されたコンテンツをロールバックする場合は、コマンドdrush mrmigration-idを実行します。

  • 移行プロセスの開始後にコード内で何かを変更した場合は、必ずコマンドdrush cditest_migrationを実行してください このコマンドは、移行中に変更を反映するのに役立ちます。 完了したら、サイトを徹底的にチェックして、すべてのコンテンツが移行されているかどうかを確認します。