あるデータベースから含まれているテーブルをコピーして、別のデータベーステーブルに挿入したい


96

テーブルのスキーマとそのテーブル内のデータを、ライブサーバー上の別のデータベースにある別のデータベーステーブルにコピーしたいと思います。どうすればこれができますか?


2つのデータベース接続を使用し、1つからテーブル構造を読み取り、そのクエリを他のデータベース接続に実行します
Dau

これらのデータベースは別々のmysqlインスタンスにあるのですか、それとも同じですか?これが継続的なプロセスである場合、レプリケーションで異なるインスタンスをセットアップできます。
Nick

@Nick私のデータベースは異なるmysqlインスタンス上にあります。それをコピーする方法を説明できますか?
johk95 2013年

回答:


218

あるデータベースから別のデータベースにテーブルをコピーする場合は、次のように簡単に実行できます。

CREATE TABLE db2.table LIKE db1.table;
INSERT INTO db2.table SELECT * FROM db1.table;

2
テーブルに外部キー制約がない場合の優れたソリューション。これを使用して、1つのテーブルだけではなく、データベース全体のコピーを作成しました。そのため、mysqldumpコマンドを使用することをお勧めします。
thorne51 2014年

MySQLはテーブルデータを個別のファイルに保存できるようになりました(frmファイルはテーブルごとに多すぎます)。このアプローチは間違いなく機能しますが、巨大なデータベースでは低速です。多分別の方法はありますか?
Alex Kovshovik

1
これは、データベースが同じサーバー上にある場合にのみ機能します。
zgr024

10

または単にMySQL 5でCREATE TABLE db2.table SELECT * FROM db1.table


4
これはインデックスなどをコピーしません。タプルのセットに基づいてテーブルを作成するだけです。あなたはおそらくこれをしたくないでしょう。
BenMQ、2014

はい、このクエリはindexeをコピーしません
XxXk5XxX



2

構造をコピーしたいだけの場合は、

CREATE TABLE Db_Name.table1 LIKE DbName.table2;

PS>スキーマとデータをコピーしません



0

コマンドラインで:

mysqldump -h localhost -u username -ppassword [SCHEMA] --tables [TABLE] | mysql -h otherhost -u username -ppassword [SCHEMA2]

これにより、localhostのSCHEMA内のテーブルがotherhostのSCHEMA2にコピーされます。

localhostとotherhostは単なるホスト名であり、同じでも異なっていてもかまいません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.