[MySQL]レコードを別データベース・テーブルの特定の値で登録する

MySQL のデータ移行時に、旧データベースから新データベースへデータを移行する場合、単純にデータベース自体をコピーできれば良いんですが、テーブルやフィールドを変更していると単純なコピーではデータ移行できないことがあります。そういう場合、 INSERT 文を利用して旧データベースから新データベースへデータを登録することでデータ移行することができます。
今回は別のデータベースへデータを登録する方法を説明したいと思います。

前提条件

  • MySQL : 5.6

別データベースへレコードを登録する INSERT 文

下記のように INSERT 文を記述すれば別データベースへレコードを登録することができます。

INSERT INTO `new_db`.`new_table`(`id`, `field_a`, `field_b`, `field_c`)
SELECT `id`, `field_d`, `field_e`, `field_f` FROM `old_db`.`old_table`;

new_db が新データベースで new_table が新テーブル、 old_db が旧データベース、 old_table が旧テーブルになります。
データベース名やテーブル名、フィールド名は適宜変更してクエリを実行してもらえればと思います。

最後に

データ移行時にテーブルやフィールドを整理することはよくあると思いますが、そうするとデータベースを単純にコピーすることができなくなります。そういう場合は今回のクエリを実行することで、旧データベースのテーブルのレコードを新データベースのテーブルへ移行することができるようになります。別データベースからレコードを登録することはあまりないかもしれませんが、いざという時役に立つので忘れないようにしたいですね。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です