• ベストアンサー

(SQLite)テーブル名の検索

同じような名前のテーブルと名前の関連性が全くないテーブルが10個あるとします。 (例) a_test a_text a_talk users setting .... その中で名前が、a_から始まるテーブルの名前を取得したい場合はどうすればよいのでしょうか? 使用しているデータベースはSQLiteです。

質問者が選んだベストアンサー

  • ベストアンサー
noname#223623
noname#223623
回答No.2

[前置き] 自分はPerlを使わないのでわかりませんが、SQL文を実行して結果を取得するというのはできるはず。Perlに限らず、DBを扱える言語なら基本的にできないはずがない(というかできないと困る)。 具体的な手順は質問者さんの方が知っていると思うが、念のため検索で見つけたページを挙げておく。  ItsMemo::IT (旧) - SQLite+Perl: データを取得する方法  http://www.itsmemo.com/it/cgi/000075.html SQLiteのバージョン、使用するモジュールの違いで変わるところはあるだろうがそれは自分で調べてください。 [本題] 前置き部分が解決していれば、残る問題はテーブル名の一覧を取得するにはどういうSQL文を実行すればよいのかということだ。これについてはsqlite_masterというテーブルに問い合わせすれば取得できる。詳しくは次のページの「コラム:SQLITE_MASTER テーブルに対するクエリー」を参考に。  sqlite: SQLite データベースを管理するプログラム  http://www.net-newbie.com/sqlite/sqlite.html sqliteのコマンドで実行したのが以下の例。  sqlite> select * from sqlite_master;  table|a_test|a_test|3|create table a_test(id,text)  table|a_text|a_text|4|create table a_text(id,text)  table|a_talk|a_talk|5|create table a_talk(id,text)  table|users|users|6|create table users(id,text)  table|setting|setting|7|create table setting(id,text)  sqlite> select name from sqlite_master where type = 'table' and name like 'a_%';  a_test  a_text  a_talk  sqlite> モジュールによってはテーブル一覧を返す関数(メソッド)が用意されてるようですが、上記のやり方のほうが応用が効くので覚えておいたほうがいいと思います。

effector
質問者

お礼

理解できました。 わかりやすい説明ありがとうございました。

その他の回答 (1)

noname#223623
noname#223623
回答No.1

例えば「PHPのスクリプトからテーブル名を取得して配列に入れたい」というような状況説明がないのではっきりとは答えられません。 とりあえず、テーブル名を確認したいだけなら、SQLiteのプロンプトで ".table a_"とすると表示されます。  sqlite> .table <- 全テーブル名の一覧  a_talk a_test a_text setting users  sqlite> .table a_ <- a_で始まるテーブル名の一覧  a_talk a_test a_text 他の方法を期待してるなら補足お願いします。

effector
質問者

補足

Perlのスクリプトからテーブル名を取得して配列に入れたいです。お手数をおかけして申し訳ございません。

関連するQ&A