4

PhpMyAdmin を使用して管理する MySql のテーブルがあります。現在、約 960,000 行に収まっています。

Excel でデータを見るのが好きな上司がいます。つまり、毎週、データを Excel にエクスポートする必要があります。

これを行うためのより効率的な方法を探しています。タイムアウトになるため、実際にはテーブル全体を一度に実行することはできません。そのため、テーブルを小さなクエリに「チャンク」し、そのようにエクスポートすることにこだわっています。

Excel (および Access) をデータベースに直接接続しようとしましたが、同じ問題が発生しました。タイムアウトします。接続制限を延長する方法はありますか?

4

4 に答える 4

13

あなたの上司はレインマンですか?彼は生の「データ」の中の「情報」を見つけただけですか?

それとも、彼は本当に必要なものを尋ねるのではなく、Excelで関数を構築しますか?

彼と1時間座って、彼が実際にデータをどのように処理しているかを確認します。どのような質問がされていますか?どのようなパターンが(手動で)検出されていますか?その情報を見つけるための実際のツールを作成し、それを監視/アラートシステムに接続します。

または、新しいボスを取得します。 真剣に。あなたは私がそう言ったと彼に言うことができます。

于 2012-06-05T02:38:44.977 に答える
3

正直なところ、このサイズのデータ​​については、mysqldump を実行してから、別の場所 (おそらくこのタスク専用の仮想マシン) にインストールされた MySQL の別のコピーにテーブルをインポートすることをお勧めします。そこから、タイムアウトなどを必要なだけ高く設定でき、リソースの制限が本番データベースを爆破することを心配する必要はありません。Unix ベースの OS で使用niceするか、Windows ベースのシステムでプロセスの優先度を使用すると、本番システムにあまり影響を与えずにこれを実行できるはずです。

または、本番データベースのレプリカをセットアップして、そこからデータをプルすることもできます。本番システムからさまざまなテーブルまたはデータベース全体をレプリケートする、いわゆる「レポート データベース」を用意することは、実際には大規模な環境ではかなり一般的な方法であり、誰かのために番号を取得している本番データベースを誤って強制終了しないようにするためです。追加の利点として、上司のためにデータのプルを開始する前に、mysqldump のバックアップが完了するのを待つ必要はありません。すぐにできます。

于 2012-06-05T00:39:47.443 に答える
1

行は多すぎません。クエリを実行して、データをcsvファイルにエクスポートします。

SELECT column,column2 INTO OUTFILE '/path/to/file/result.txt'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM yourtable WHERE columnx = 'çondition';
于 2012-06-05T01:29:38.093 に答える
0

1 つのオプションは、テーブルを使用するSELECT ... INTO OUTFILEmysqldump、Excel で直接開くことができる CSV にエクスポートすることです。

于 2012-06-05T00:37:34.217 に答える