- ベストアンサー
(SQLite)テーブル名の検索
同じような名前のテーブルと名前の関連性が全くないテーブルが10個あるとします。 (例) a_test a_text a_talk users setting .... その中で名前が、a_から始まるテーブルの名前を取得したい場合はどうすればよいのでしょうか? 使用しているデータベースはSQLiteです。
- みんなの回答 (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> モジュールによってはテーブル一覧を返す関数(メソッド)が用意されてるようですが、上記のやり方のほうが応用が効くので覚えておいたほうがいいと思います。
その他の回答 (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 他の方法を期待してるなら補足お願いします。
補足
Perlのスクリプトからテーブル名を取得して配列に入れたいです。お手数をおかけして申し訳ございません。
お礼
理解できました。 わかりやすい説明ありがとうございました。