ローカルのデータベーステーブルにselect文の結果をコピーします

David542:

私は、ローカル・データベース・テーブルにリモートDBクエリの内容をコピーしたいと思います。これを行うための最善の方法は何でしょうか?現在、私のような何かをしようとしています:

mysql --host=example.com --user=syncdb --password=syncdb_pass db_name \
      -e "SELECT user, MD5(user) FROM auth_user" \
> mysql -u root --host=127.0.0.1 --password="" localdb

私はちょうど私がやろうとしているかを示すために疑似コードの一種として追加した第二部 - コマンドの最初の部分は、データをつかむために罰金を動作します。どのように私はこれを実現するだろうか?:それを表示するもう一つの方法は、のようになり

INSERT INTO mylocaldb.table (SELECT user, MD5(user) FROM myremotedb.auth_user)
rd_nielsen:

この目的のための使用に代わるツールですexecsql.pyhttps://pypi.org/project/execsql/)、スクリプトコマンドは、リモート・サーバー上のデータを要約し、それらをコピーすることができますスクリプトファイルからコマンドのセットを読んであろうローカルサーバーへのデータ。あなたはそれがローカルサーバにコピーされます後のデータでやってことになるだろうことをより多くの操作がある場合は、これらのステップを実行するためのコマンドは、コピー操作以下同じスクリプトに含めることができます。

最初の接続がローカルデータベースに対して行われると仮定すると、実行するスクリプトが「get_remote_users.sql」と命名されていること、そしてあなたのようなコマンドを使用してプロセスを開始することができます。

execsql.py -u root -w get_remote_users.sql 127.0.0.1 localdb

コマンドラインオプションと引数の意味はで説明されてhttp://execsql.osdn.io/syntax.html

以下のスクリプトは、リモート・データベースに接続するビューを作成し、ローカルデータベースにそのビューをコピーし、そのビューを削除するために使用することができます。

-- !x! connect to mysql(server=example.com, db=db_name, user=syncdb, need_pwd=True, password=syncdb_pass) as remote
-- !x! use remote
create or replace view userlist as
select user, MD5(user) as user_md5 from auth_user;
-- !x! copy userlist from remote to replacement remote_users in initial
drop view userlist;
-- !x! use initial

始まる行は-- !x!へのメタコマンドですExecSQLメソッド

これは、ローカル・データベースに「remote_users」という名前のテーブルを作成します(または置き換え)。

これが頻繁に発生する操作であり、あなたが残すことができた場合はuserlist、リモートサーバー上の場所にビューを、このスクリプトが含まわずか2行に減少させることができる接続コピーメタコマンドを。

免責事項:私はexecsql.py書きました。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=17415&siteId=1