ここでのコンテキストは、既存の Drupal 6 サイトから、Drupal や他の CMS を使用していない新しいサイトにユーザーを移行することです。Drupal は、少なくとも v6 では、追加のユーザー データを格納するためにかなり複雑なメカニズムを使用していました。
- ユーザーデータが
users
テーブルに入った - と呼ばれる別のテーブルでデータ キーを定義しました。
profile_fields
- と呼ばれるテーブルの実際の値
profile_values
。
profile_values とユーザーが uid フィールドを共有しました。私の新しいサイトでは、このような構造になっている単一のユーザーテーブルを使用しています
CREATE TABLE IF NOT EXISTS `users` (
`uid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`rname` varchar(64)...
元の Drupal の profile_values テーブルでは、各ユーザーの rname エントリ (個別の uid) は、その uid と 14 の「fid」によって識別されます。
CREATE TABLE IF NOT EXISTS `profile_values` (
`fid` int(10) unsigned NOT NULL DEFAULT '0',
`uid` int(10) unsigned NOT NULL DEFAULT '0',
`value` text,...
私がする必要があるのは、profile_values テーブルから正しい値 (uid = UID & fid = 14) を取得し、users テーブルを更新する SQL を少し実行することです。これにはINNER JOINなどを使用する必要があると漠然と思っていますが、それは私のSQLスキルのレベル(私の最も貧弱なスイート)をはるかに超えています。これをどのように達成できるかについてのヒントをいただければ幸いです。
私が求めているものの図がここで役立つかもしれません
user
表(前)
uid name rname
1 Any - empty prior to operation
2 Eny - empty prior to operation
profile_values
テーブル
uid fid value
1 13 v1-13
1 14 v1-14
2 11 v2-11
3 14 v2-14
user
表(後)
uid name rname
1 Any v1-14
2 Eny v2-14