MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで1つのスキーマから別のスキーマへデータを挿入する方法

MySQLでは、INSERT INTO ... SELECT文を使うことで、あるデータベース(スキーマ)から別のデータベースへ簡単にデータをコピーできます。ここでは、「web」と「test」という2つのデータベースを例に、具体的な手順を解説します。

基本構文

スキーマ間でデータを挿入する際の基本構文は以下の通りです。

insert into データベース名2.テーブル名2 select *from データベース名1.テーブル名1;

ポイントは、テーブル名の前に「データベース名.(ドット)」を付けることです。これにより、現在接続しているデータベースに関係なく、任意のスキーマのテーブルを指定できます。

手順1:元となるテーブルを作成する

まず、データベース「web」内にテーブル「DemoTable2020」を作成します。

mysql> create table DemoTable2020
    -> (
    -> Id int,
    -> Name varchar(20)
    -> );
Query OK, 0 rows affected (0.67 sec)

レコードを挿入する

INSERTコマンドでサンプルデータを数件追加します。

mysql> insert into DemoTable2020 values(101,'Chris');
Query OK, 1 row affected (0.12 sec)

mysql> insert into DemoTable2020 values(102,'David');
Query OK, 1 row affected (0.25 sec)

mysql> insert into DemoTable2020 values(103,'Mike');
Query OK, 1 row affected (0.11 sec)

レコードを確認する

SELECT文で登録されたデータを表示してみましょう。

mysql> select *from DemoTable2020;

実行結果は以下の通りです。

+------+-------+
| Id   | Name  |
+------+-------+
| 101  | Chris |
| 102  | David |
| 103  | Mike  |
+------+-------+
3 rows in set (0.00 sec)

手順2:別のデータベースにテーブルを作成する

次に、もう一方のデータベース「test」に接続し、テーブル「DemoTable2021」を作成します。

mysql> use test;
Database changed
mysql> create table DemoTable2021
    -> (
    -> StudentId int,
    -> StudentName varchar(20)
    -> );
Query OK, 0 rows affected (0.60 sec)

手順3:スキーマ間でデータを挿入する

準備が整ったら、以下のクエリを実行して「web」データベースのテーブルから「test」データベースのテーブルへデータを挿入します。

mysql> insert into test.DemoTable2021 select *from web.DemoTable2020;
Query OK, 3 rows affected (0.18 sec)
Records: 3 Duplicates: 0 Warnings: 0

「Records: 3」と表示されており、3件のレコードが正常にコピーされたことがわかります。

結果の確認

SELECT文で挿入後のデータを確認しましょう。

mysql> select *from DemoTable2021;

実行結果は以下の通りです。元のテーブルのデータが正しくコピーされています。

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 101       | Chris       |
| 102       | David       |
| 103       | Mike        |
+-----------+-------------+
3 rows in set (0.00 sec)

まとめ

このように、テーブル名の前に「データベース名.」を付けるだけで、異なるスキーマ間でもINSERT INTO ... SELECT文を使ってデータを移行できます。なお、両テーブルのカラム構成が異なる場合は、SELECT句で必要なカラムを明示的に指定すれば、柔軟にデータをコピーすることも可能です。

  1. Androidでフラグメント間のデータ受け渡しを実装する方法【サンプルコード付き】

    はじめに 本記事では、Androidアプリ開発において、あるフラグメント(Fragment)から別のフラグメントへデータを受け渡す方法を解説します。ここではインターフェース(コールバック)を使用し、ホストとなるActivityを経由して2つのフラグメント間でメッセージをやり取りする、定番の実装パターンをサンプルコード付きでステップごとに紹介します。 全体の仕組み 今回のサンプルでは、以下のような流れでデータを受け渡します。 FirstFragment:TextViewがタップされると、リスナー経由でメッセージを送信する MainActivity:FirstFragmentからのコールバックを

  2. Apple IDから別のApple IDへデータを移行する方法【iPhone・PC対応】

    あるApple IDから別のApple IDにデータを移行できますか?娘が自分専用のApple IDを使える年齢になったので、iPad miniの中身(音楽、写真、アプリ)を、特にゲームアプリは「セーブデータごと」新しいアカウントに移したいのですが、どうすればよいでしょうか?― Appleコミュニティより別のApple IDで新しいiPhoneにデータを移すには?今使っているiPhoneから新しいiPhone 13にすべてのデータと設定を移したいのですが、父親とApple IDを共有しているため、データと設定を正しく新しい端末へ移行する方法がわかりません。助けてください。― RedditよりA