1

私はローカルでいくつかの実験を行っており、読み取りアクセスしかできない本番MySQL DBからのデータが必要です。スキーマは、1 つの列が省略されていることを除いてほぼ同じです。私の目標は、前日のデータを抽出してローカル テーブルにインポートする、毎日実行できるスクリプトを作成することです。

私が最も混乱している部分は、データをダウンロードする方法です。名前mysqldumpが散らかっているのを見たことがありますが、それはデータベース全体を複製する方法のようです。経験がないので、php の使用は避けたいと思います。CSV を作成してきましたが、データの整合性 (フィールドにカンマや \n がある場合) と CSV のサイズ (1 日あたり数十万行) が心配です。

4

2 に答える 2

2

何十万行もある場合、最適で簡単な解決策はそれであり、mysqldump はデータベース全体をエクスポートするだけでなく、必要なテーブルだけをエクスポートすることができます。

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

mysqldump.exe -u root -p DATABASENAME TABLE1 TABLE2 > exported_tables.sql

table1これはとtable2からエクスポートされdatabasenameます。

また、where パラメータを使用して結果をフィルタリングすることもできます。

 --where='where_condition', -w 'where_condition'

Dump only rows selected by the given WHERE condition. Quotes around the condition are mandatory if it contains spaces or other characters that are special to your command interpreter.

Examples:

--where="user='jimf'"
-w"userid>1"
-w"userid<1"
于 2012-10-25T22:48:07.567 に答える
0

2 つのデータベース間に何らかの形式の dblink が必要です。このディスカッションを参照して、本番データベースにローカルでアクセスするか、リモート マシンからアクセスするかに応じて、適切な回答を選択してください。

Oracle データベース リンク - MySQL と同等ですか?

私の理解では、別のMySQLサーバーから運用サーバーにアクセスする必要があり、正確なコピーは必要なく、カスタマイズされたクエリを作成する必要があります。もしそうなら、 を使用FEDERATED MySQL storage engineすることは、おそらくあなたが持つことができる最良の選択肢でしょう. テーブルを使用する場合FEDERATED、ローカル サーバー上のクエリは、リモート (フェデレーション) テーブルで自動的に実行されます。ローカル テーブルにはデータは格納されません。 ここに。

于 2012-10-25T22:46:31.420 に答える