MySQL で 1つのデータベースから別のデータベースにデータをコピーする
あるデータベースから別のデータベースにデータをコピーするさまざまな方法について学習します。
データをコピーするこの戦略は、データ複製で非常に役立ちます。データレプリケーションにより、データをさまざまなサーバーに提供し、矛盾することなくすべてのユーザーが利用できるようにすることができます。
データレプリケーションの利点には、データの可用性と信頼性の向上、および通信オーバーヘッドの削減が含まれます。あるデータベースサーバーから別のデータベースサーバーにデータベースの全部または一部をコピーできます。
このチュートリアルでは、MySQL 内(同じユーザー)、MS SQL Server(同じユーザー)、および MySQL から MS SQL Server(異なるユーザー)にデータをコピーする方法を説明します。
あるデータベースから別のデータベースにデータをコピーする
MySQL サーバーの使用
MySQL サーバーには students と person という名前の 2つのデータベースがあります。person データベースには customers という名前のテーブルがあり、students データベースには person データベースにコピーしたい student という名前のテーブルがあります。
1 人のユーザー(root)で 1つのサーバー(MySQL 8.0.27)内のデータをコピーすることに注意することが重要です。次のデータベース(赤いボックスを参照)とテーブル(緑のボックスを参照)があります。

次の SQL クエリを使用して、student テーブルを students データベースから person データベースにコピーします。
#MySQL Version 8.0.27
CREATE TABLE person.students SELECT * FROM students.student;
データをコピーした後、データベースとテーブルを観察します(下のスクリーンショットを参照)。person データベースには、customers と students の 2つのテーブルがあります。
ソースデータベースから student テーブルをコピーしたいとお気づきかもしれませんが、宛先データベースで students という名前が付けられているのはなぜですか。これは、SQL クエリで学生という名前を付けたためです。

MS SQL Server の使用
ここでは、MS SQL Server に teachers と person という名前の 2つのデータベースがあります。person データベースには customers というテーブルがあり、teachers データベースには person データベースにコピーしたい teacher という名前のテーブルがあります。
1 人のユーザーで 1 台のサーバー(MS SQL Server)内のデータをコピーします。以下のスクリーンショットで、現在のデータベース(赤いボックスを参照)とテーブル(緑のボックスを参照)を確認できます。

次のコマンドを使用して、teacher という名前のテーブルを Teachers データベースから Person データベースにコピーします。
#MSSQL Server
SELECT * INTO Person..teacher FROM Teachers..teacher;
コピーした表は、以下のスクリーンショットで確認できます。これで、Person データベースに 2つのテーブルができました。

MySQL サーバーから MS SQL Server にデータをコピーする
データベースから別のユーザーのデータベースにデータをコピーする必要があるかどうか想像したことがありますか?これは、さまざまなユーザーが関与していることを意味します(場合によってはさまざまなマシンが関与します)。
ここでは、MySQL Server から MS SQL Server にデータをコピーする方法を説明します(同じコンピューター上に、MySQL 用と MS SQL Server 用の 2 人のユーザーがいることに注意してください)。
MS SQL Server でデータベースを右クリックし、Task -> Import Data を選択します。

次のスクリーンショットの[次へ]ボタンをクリックします。
![あるデータベースから別のデータベースにデータをコピーする-mssql サーバーで[次へ]をクリックします](/img/MySQL/copy-data-from-one-database-to-another---click-next-in-mssql-server.webp)
次のスクリーンショットでは、データソースが .Net Framework Data Provider for MySQL であることを確認し、MySQL データベース名、ポート番号、およびサーバーをそれぞれ students、3306、および localhost として記述します。次に、[次へ]をクリックします。
データベース名とサーバーIP アドレスが異なる場合があることに注意してください。同じマシンで 2 台のサーバーを使用しています。そのため、localhost を使用しました。

MySQL サーバーのユーザー名とパスワードを入力し(下のスクリーンショットを参照)、[次へ]をクリックします。

宛先が SQL Server Native Client 11.0 として選択されていることを確認し、サーバーの名前とデータベース名を確認して、認証を選択します。このチュートリアルでは、Windows 認証を使用しています。次に、[次へ]をクリックします。

次の画面で[次へ]をクリックします。

要件に従って SQL クエリを記述します。次のコマンドを使用して、student テーブルからすべてのレコードをコピーしています。[次へ]をクリックします。

宛先テーブル名(MS SQL Server に表示される名前)を入力し、[次へ]をクリックします。

以下の画面で[次へ]をクリックします。

次のスクリーンショットで、[すぐに実行]を選択するか(緑色のボックスを参照)、パッケージを保存して後で実行することができます(赤色のボックスを参照)。[次へ]をクリックします。

次の画面で[完了]をクリックします。

ここで、次の画面はデータがコピーされたことを示しています。[閉じる]をクリックします。

コピーされたテーブルについて MSSQL Server を確認すると、次のスクリーンショットに緑色のボックスが表示されます。

まとめ
上記の議論を考慮して、あるデータベースから別のデータベースにデータをコピーすることは、セキュリティ上の懸念、データの可用性、信頼性などのさまざまな理由から学ぶことが重要であると結論付けました。また、世界中のさまざまなユーザーにデータへのアクセスを提供できます。
