これには 2 つのケースがあります。
- データベースは同じサーバーに保存されます
- データベースは異なるサーバーに保存されています
解決策 1: 同じサーバー内のデータベース
宛先テーブルにデータを挿入するだけです。
insert into dbDestination.tblDestination (field1, field2, ...)
select ...
from dbSource.tblSource
ノート
- ステートメントには
select
、宛先テーブルにコピーする必要があるフィールドが含まれている必要があります。
- ステートメント内のフィールドは、その部分
select
のフィールド リストで指定されたフィールドと同じ順序である必要があります。insert
解決策 2: 異なるサーバーにあるデータベース
データをプレーン テキスト ファイルにエクスポートしてからインポートします。私は個人的に .csv ファイルを好みますが、それはあなた次第です。
2 つの可能性があります。使用するselect... into outfile
か、システム ターミナル (コマンド ウィンドウ) を使用するかです。
を。select... into outfile
と_load data
サーバーの場所dbSource
:
select ...
from dbSource.tblSource
into outfile [your destination file]
...
ファイルを宛先サーバーにコピーします。
サーバーの場所dbDestination
:
load data local infile [あなたのファイル] ...
ノート
- ステートメント内のフィールドは、その部分
select
のフィールド リストで指定されたフィールドと同じ順序である必要があります。insert
select... into outfile
およびの適切な使用法については、MySQL リファレンス マニュアルを確認してください。load data...
b. 端末の使用
Linux (またはその他の Unix システム) で、ターミナル ウィンドウを開き、次のコマンドを入力します。
$ mysql -h [sourceServer] -u [yourUser] -p[yourPassword] dbSource -e"select ..." | sed 's/\t/,/g' > yourDestinationFile.csv
ファイルを宛先サーバーにコピーします
MySQL コンソールを起動し、「load data ...」を使用します。
ノート
- ステートメント内のフィールドは、その部分
select
のフィールド リストで指定されたフィールドと同じ順序である必要があります。insert
- この
| sed 's/\t/,/g'
部分は、mysql クエリの出力を .csv ファイルに変換します。の代わりに別のセパレータを使用できます,
。詳細については、http://lowfatlinux.com/linux-sed.htmlsed
を確認してください。
- 宛先ファイルには行ヘッダーがあるため、データをインポートするときはそれらを無視する必要があります。文末
ignore 1 lines
に追加するだけです。load data...
あるデータベースから別のデータベースにデータをコピーするのは、非常に簡単な作業です。これがあなたを正しい方向に向けることを願っています。
アドバイス: お使いの MySQL バージョンのリファレンス マニュアルをダウンロードし、手元に置いておいてください。そこでは、ほとんどのソリューションを見つけることができます。