bash スクリプトを使用して、データベース内の特定のテーブルから別のデータベースに行を挿入したいと考えています。2 つのデータベースは異なるサーバー上にあります。どうやってやるの?
私はこのようなものが欲しい:
INSERT INTO db1.table1(row1, row2) SELECT row1,row2 FROM db2.table2;
ただし、データベースは別のサーバーにあります。
ありがとうございました。
Percona Toolkit のpt- archiver ツールを使用することをお勧めします。あるインスタンスから別のインスタンスに行をコピーまたは移動できます。その作業を効率的かつ段階的に行います。
例:
$ pt-archiver --no-delete \
--source h=host1,D=db1,t=table1 \
--dest h=host2,D=db2,t=table2 \
--columns col1,col2 \
--where "1=1" --limit 1000 --commit-each
ssh
リモートコマンドを実行しmysldump
、リモートデータベースから行を取得し、ローカルデータベースに行を挿入するにはmysqlを使用する必要があると思います。
ssh <remoteuser>@<remoteServer> mysqldump -t -u <remoteDbUser> -p<remoteDbPass> <remoteDbName> <remoteDbTable> -w<whereCondition> | mysql -u <localDbUser> -p<localDbPass> <localDbName>
次の点に注意してください。
mysqldump コマンドの詳細については、man ページを使用してください。
同じサーバー上の 2 つの MySQL データベース間で操作を行いたい場合は、簡単です。このスレッドを参照してください:
http://forums.mysql.com/read.php?61,3063,4004#msg-4004
別のサーバー上のデータベースからデータを転送したい場合、または別の種類のデータベースである場合、それはより困難であり、おそらくソフトウェアを使用するか、いくつかを構築する必要があります. MySQL には、Oracle が持つデータベース リンク機能がありません。
これを参照してください: http://dev.mysql.com/doc/refman/5.6/en/federated-create-connection.html mysql の db リンクのようなものです。