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