2016-12-07 14 views
0

drupalwordpressの2つのデータベースがあります。 drupal 6からwpへのポストイメージパスを移行しようとしています。 - NIDペアMySQL結合テーブルから挿入

drupal.content_field_imageがfield_image_fidた:

drupal.content_field_imagedrupal_filesは、必要なデータを含みます。 drupal.drupal_filesにはfid-filepathの組(field_image_fid = fid)があります。

私はNIDとファイルパスの両方を含むテーブルを取得する必要があるので、私はこのテーブルを結合:

SELECT * 
FROM `content_field_image` 
JOIN `files` ON content_field_image.field_image_fid = files.fid; 

は今、私はそのようwordpressデシベルにデータを挿入する必要があります。

meta_id = 34 +結合テーブルからn(nは増分で)

post_id = nid

meta_key = fifu_image_url

meta_value = filepath結合テーブル

からだから私はいくつかの質問を持っている:

  1. 結合テーブルからの挿入を作るには?
  2. 参加したテーブルからすべてのエントリを挿入するwhileループを作成するにはどうすればよいですか?
  3. 挿入するたびにnを1ずつ増やす方法はありますか?
+0

「select from insert」クエリタイプを使用します。各icrementに挿入されたすべての値。また、結合も使用できます。ただし、列名が同じであることを確認してください。最初に、ローカルで試してみましょう。 –

答えて

0

結合テーブルからの挿入方法は?

は挿入ごとに後1によりn個の増分を作る方法INSERT INTO .. SELECT FROM構造

を使用しますか?

nauto_incrementとして宣言する。そうでなければ、関連テーブルに既にauto_increment列がある場合は、自分で行う必要があります。あなたがすべてでそれを必要としない結合テーブル

からすべてのエントリを挿入するようにしながら、のようなループにする方法

INSERT .. SELECT構成では、フェッチされたすべての行が参照先のテーブルに挿入されます。

0

選択とあなたのインサートが、このようなものが考えられます。それを動作させるために

insert into wordpress.table 
SELECT (@i:[email protected]+1), nid, fifu_image_url, filepath 
FROM drupal.content_field_image 
JOIN drupal.files ON content_field_image.field_image_fid = files.fid; 
join (select @i:=34) inc on true 

、あなたの選択必見の列は、あなたが挿入されているテーブルの同じ列を持っています。

インクリメンタルintは、この変数@iで作成し、必要に応じて34で初期化し、印刷結果として1ずつインクリメントします。

関連する問題