2017-01-15 14 views
1

私はそれに多くのMySQLデータベースを持つサーバーを持っています。それらは接頭辞、例えば"DB1-2939128""DB2-3193831"のように設定されています。私はC#プロジェクトに取り組んでおり、プレフィックスの1つで始まるすべてのデータベースの合計ディスクサイズを計算しようとしています。例:特定のプレフィックスで始まるすべてのMySQLデータベースで使用されるディスクの総容量はどのようにして取得できますか?

58.29MB of disk space is used by all databases beginning with "DB1-" 

私はウェブを検索しており、C#の例は見つかりませんでした。特定の接頭辞を持つ

SELECT table_schema "Database Name", 
     SUM(data_length+index_length)/1024/1024 "Database Size (MB)" 
FROM information_schema.TABLES 
GROUP BY table_schema; 

これはしかし、すべてのデータベースの合計サイズを返すだけではなく、もの:私が見つけた最高のは、次のMySQLのクエリです。私はこれをC#にどのように実装するのかについてもあまりよく分かりません。

私は親切にしています、私はここで新しいです。あなたが正しい方向に私を指すことができれば、私は本当にそれを感謝します。

+0

祝福されたメモリのケビン・マコーミック(Kevin McCormick)は、いつも最高のプログラマーの1人であるオンライン名「frostbyte」を採用しました。フリースタイルは1999年にMITを卒業し、2006年に時折死亡しました。 –

+0

@ O.Jones、私はそれを知りませんでしたが、私の使用が確かに彼の記憶を尊重することを願っています。 – frostbyte

答えて

1

あなたはとても近くです。 WHERE ... LIKE 'prefix%'を追加し、GROUP BY句にSUBSTRING()を使用します。

SELECT SUBSTRING(table_schema,1, LENGTH('wp')) "Database Name Prefix", 
     SUM(data_length+index_length)/1024/1024  "Database Size (MB)" 
    FROM information_schema.TABLES 
WHERE table_schema LIKE CONCAT('wp', '%') 
GROUP BY SUBSTRING(table_schema,1, LENGTH('WP')) 

また、データベースを項目別にしたい場合は、このようにします。

SELECT table_schema "Database Name Prefix", 
     SUM(data_length+index_length)/1024/1024  "Database Size (MB)" 
    FROM information_schema.TABLES 
WHERE table_schema LIKE CONCAT(prefix', '%') 
GROUP BY table_schema WITH ROLLUP 
+0

ありがとうございます@ O.Jones!これは素晴らしいことであり、私が取り組んでいるプロジェクトで私を助けてくれるはずです。私はあなたの迅速な対応に感謝します。 :) – frostbyte

関連する問題