[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が旧テーブルになります。

データベース名やテーブル名、フィールド名は適宜変更してクエリを実行してもらえればと思います。

最後に

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

コメントする

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