web-dev-qa-db-ja.com

既存のユーザーを新しいDrupalサイトにインポートする

既存のDrupalサイトには約1万人のユーザーを引き継ぐ必要があるため、データベースのCSVエクスポートとビューエクスポート/ VBOを介してこのデータのほとんどを収集できました。 。2つのCSVがあります。1つはユーザー名、パスワードハッシュ、UID、もう1つはユーザーフィールドデータと、インポート中にデータを結合/結合するUIDです。継承したサイトデータとサイトデータでは、フィールド構造に違いがあります新しいサイト。インポート中に新しいデータの関係を確立し、既存のデータベースレコードの直接ポートを除外する必要があります。

結合されたCSVですべてのユーザーをインポートするDrushスクリプトを作成しても問題はありません。 Drupalユーザースペース内にパスワード文字列を入力して、ユーザーレコードをインポートすることが可能かどうかを考えています。user_save()メソッドを見ると、ユーザーID、またはパスワードハッシュ。これに依存する多くのロジックが実装されています。

だから私が頭の中で持っているアプローチはこれです:

  • SQL IN FILEを使用してベースラインの最小データをインポートし、Drupalのユーザーテーブルにユーザーを確立します。ユーザー名、パスワードハッシュ、作成日、変更日など...
  • 2番目のDrushスクリプトを使用してフィールドデータを反復処理し、UIDをオフにしたuser_save()を使用してユーザーレコードを更新します。

厳密にDrushベースの別のアプローチを使用できますか?これは、インポートするデータが結合CSVファイルであると想定しています。 UIDを調整できないことは、おそらくこれが不可能であることを意味しますが、尋ねる価値はあります。

1
Cameron Kilgore

Feeds モジュールを使用しているようです!フィールドのソースから宛先へのマッピングをサポートし、場合によってはエンティティを自動作成します。

モジュールをインストールして有効にしたら、Feeds Importer(Structureの下)を作成してそこから移動します。/importに移動して、CSVファイルをフィードインポーターにアップロードして処理します。

サンドボックスモジュールDrush Feeds Importがあり、必要に応じてコマンドラインからこれを実行できます。

チェックアウト:

フィードへのサイトビルダーのガイド:

https://www.drupal.org/node/622698

ストックFeedsモジュールで問題が解決しない場合は、Feeds APIを使用して、データを操作し、新しいサイトに挿入する独自の処理クラスを定義できます。

2
Justin