From: eiichi_maekawa@... Date: 2010-01-05T18:00:11+09:00 Subject: [ruby-list:46727] MySQLテーブル数の把握 前川です。 MySQLのデータで、テーブル数をとりたいのですが、どのようにすればよいのか、途 方にくれています。 dbiを使用するサンプルを見つけ、以下のようなコーディングを実施しましたが、 テーブル名は取得できましたが、実際に、何個のテーブル名が取得できているのか は、 fetchで、取り出した結果で、個数を求めています。 fetchを使用せず、直接、テーブル名の数を取得するためには、どうすればよい か、ご教示いただきたく、 よろしくお願いします。(ユーザで作成したテーブル数を直接求めるSQL文は、無 かったと思いますが・・・) ご指導いただきますよう、お願いします。 バージョンは以下です。 ruby 1.8.7 (2009-06-12 patchlevel 174) [i386-mswin32] *** LOCAL GEMS *** actionmailer (2.3.4) actionpack (2.3.4) activerecord (2.3.4) activeresource (2.3.4) activesupport (2.3.4) deprecated (2.0.1) linecache (0.43) mysql (2.8.1) rack (1.0.0) rails (2.3.4) rake (0.8.7) ruby-debug-base (0.10.3) ruby-debug-ide (0.4.5) sinatra (0.9.4) sqlite3-ruby (1.2.5) コーディングサンプル #!D:/Ruby/bin/ruby.exe -Ks require 'dbi' begin dbh = DBI.connect('DBI:Mysql:fbsys:a28341', 'dbuser01', 'dbkey')#←データ ベース MySQL に接続 sth = dbh.prepare('show tables') #←実行するSQL文を設定 puts dbh #←デバッグライト puts sth #←デバッグライト sth.execute #←SQL文を実行し、結果が、sthにはいる。? count = 0 #←テーブル名用カウンタの初期化を実施 sth.fetch { |row| #←この部分で、sthから結果(テーブル名)をfetchで取り出 し、 p row #←この部分で、出力しています。 count = count + 1 #←テーブル名もカウンタを+1しています。 } sth.finish # sthの終了? puts 'count='+count.to_s #←この部分でcount=n を出力しています。 #DB例外発生時の処理 rescue DBI::DatabaseError => e p "An error occurred" p "Error code: #{e.err}" p "Error message: #{e.errstr}" #切断漏れしないようにensureでdisconnectします。 ensure dbh.disconnect if dbh end #デバッグライトの結果です。 # # ["aplist"] ["chistory"] ["efbinput"] ["fbginput"] ["fbinput"] ["fbninput"] ["kfiletable"] ["sffiletable"] ["sfiletable"] count=9 #count には、テーブル名の数が入っています。 了