• ベストアンサー

PostgreSqlのテーブル一覧が欲しい

PostgreSqlのテーブル一覧が欲しい pg_class(のrelkind = 'r'の条件)にテーブルの情報が入っています。 これを自作テーブルとシステムが生成したテーブルに別けたいのですが、どの区分を見ればわかりますか?

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

  • ベストアンサー
  • annyG
  • ベストアンサー率25% (10/39)
回答No.2

select * from pg_catalog.pg_class,pg_catalog.pg_statio_user_tables where relkind='r' and pg_catalog.pg_statio_user_tables.relid=pg_catalog.pg_class.relfilenode ですかね。

ngwave
質問者

お礼

ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

何をしたいのか分かりませんが、テーブル情報は information_schema.tables を参照すれば 分かります。 select tabele_schema,table_name from information_schema.tables order by tabele_schema,table_name このSQLを実行すると分かります。

ngwave
質問者

お礼

ありがとうございます。 それをすると、システムテーブルやらビューやら関係ないものだらけになります。 欲しいのは「自分でクリエイトしたテーブル」の一覧です。 information_schema.tablesは知っています。 そのビューの中で呼だしているのがpg_classです。 pg_class.relkind = 'r'の条件でテーブルだけに絞れるところまでは分かったのですが、 システムテーブルか 自作テーブルか これを判定する方法が分かりません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • postgreSQLでテーブルの一覧

    他人が管理していたUNIXマシンのデータベースがあります。 postgreSQLです。 さて、SQLコマンドで、SELECTとかINSERTとかはわかった(というか 教わった)のですが・・・・ テーブルが複数あるようなので、そのテーブルの一覧というか、 すべてのテーブルの名称を見るにはどうしたらよいのでしょうか?

  • PostgreSQLでテーブルに付与した権限の一覧は出せますか?

    PostgreSQL7.2.3 を利用しています。 現在いろいろと開発を行いテーブルが数10となりました テーブル個別に GRANT文を発行していたのですが・・・ 個々のテーブルに対しどのDBユーザ(グループ)が 何の権限を持っているか解らなくなってきました。 現在付与されている権限の一覧表示機能みたいなものはありますか? マニュアルで発見できませんでしたので無いのかもしれませんが、 ご存知の方いましたらお教えください。 不要な権限を残したままでは、セキュリティホール(?)になるのでは? と考えています。皆さんはどうされているのでしょう? 「ありません」という回答でも助かります・・・

  • MySQLとPostgreSQLについてのSQLインジェクション

    はじめて質問させていただきます。 よろしくお願いします。 現在、私は大学の研究テーマでデータベース(MySQL、PostgreSQL)を使っているCGIを自作し、それぞれのデータベースについてSQLインジェクションの脆弱性について調べる、という研究を行っています。 ブラインドSQLインジェクションについて調べているのですが、 PostgreSQLの場合、pg_tablesというテーブルにデータベースのテーブル一覧表がのっていて、それを参照することでテーブル名が取得でき、いろいろ悪いことができてしまいますが、MySQLの場合、ブラインドSQLインジェクションを起こそうと思った場合どのようなコマンドを使えばよいのでしょうか? SHOW TABLESで使用中のデータベースのテーブル一覧は取得できますが、それをクエリの一部として使うことはできるのでしょうか・・・? また、全く関係ない質問なのですが、このCGIはRubyで記述して作りました。Rubyにはプリペアドステートメントという機能があるのですが、これをデータベースにアクセスするすべての箇所で用いればSQLインジェクションは100%起きないといえるのでしょうか?(現在考え得る範囲でよいのでお願いします) 卒論で困っているので知っている方がおられましたらどうかよろしくお願いいたします。

  • PostgreSqlのシステムスキーマについて教えてください

    PostgreSqlのシステムスキーマについて教えてください public・・・共有。 pg_catarog・・・カタログ情報。 information_schema・・・オブジェクトについての情報を持つビューの集合。 あと2つ pg_toast pg_temp_1 については良く分かりません。 マニュアルサイト http://www.postgresql.jp/document/8.1/html/index.html は量が多すぎて隅々まで見きれていないかもしれません。 ここに載っているという指摘でも結構です。

  • ユーザーテーブルとシステムテーブルを区別したい

    カテゴリーが違ったらすみません。 VC++のプログラムで SQLTables,SQLBindCol関数を使ってDB上のテーブル名の一覧を取得しています。 この時、システムテーブル(例えば、AccessならMSys_...,Oracle9なら_ALL_INSTANTIATION_DDL等)も取得してしまいます。 ユーザーが生成したテーブルだけの一覧を作りたいので困っています。 ユーザーが生成したテーブルとシステムテーブルを区別する方法があったら教えて下さい。

  • カラムの一覧を取得したい

    これまでMySQLを利用していたのですが、諸事情によりPostgreSQLへ 移行することになりました。そんなにMySQLへ依存した作り方をして いなかったので、簡単に考えていたのですが、ちょっと躓いている ことが出てきたのでご質問させて戴きます。 MySQLでは「show tables;」というコマンドを送ることにより、 データベース内のテーブル一覧を取得することが出来ました。 かなり色々調べ回ったところPostgreSQLでは 「select * from pg_stat_user_tables」 というコマンドが、それに相当することがわかりました。 同じように、MySQLでの「show fields from TABLE_NAME;」という 指定したテーブルのカラム一覧を取得するためのコマンドに相当する ものを探しているのですが見つかりません。 どなたかご存知であれば、ご教授下さい。 以上、宜しくお願い致します。

  • PostgreSQLのリンクテーブル?について

    はじめまして、yossy136kgと申します。 下記の件、ご教授をお願いします。 ・TEST1というDBがあったとして、psqlより\dでテーブル一覧を参照すると、「No relations found.」と表示されます。 ・MS AccessからODBC経由でTEST1のDBのリンクテーブルを作成する際、別のDB(TEST2)のテーブルが参照できます。 例)TEST2.HOGE1、TEST2.HOGE2・・・ 【質問】 TEST1のDBからTEST2のDBのテーブルをリンクさせるようなことは可能なのでしょうか? ちなみにPostgreSQL8.2.3、CentOSです。

  • Linux-PostgreSQLのテーブルをWindowsPCに表示

    会社で今行っている内容です(研修)。 内容: 自分のPC(Windows2000)で、他PC(RedHatLinux7.3)のDB(PostgreSQL7.4.2)内のテーブルを表示させる。 問題点: どこが間違っているのか漠然としているが、 ソースかJDBC設定があやしいと思います。 進め方: (1)Linux・PostgreSQLをインストール・設定  PostgreSQL内でテーブルを作成・表示済み (2)tomcat4.1.30・Apache1.3.27_4をインストール・設定  (WindowsのIEでtomcat・Apacheのページが開けるか確認済み) (4)JDBC設定(emacs ~/.bash_profile→CLASSPATH) (3)JDK1.3.1_11・mod_jk(モジュール)をインストール・設定  sampleソースをLinuxに送り、それをWindows上で表示servletを作成し、*.javaで保存 (4)FTPでLinux側に送り、コンパイルし*.class生成  /usr/local/tomcat/webapps/examples/WEB-INF/classes/  に移動 (5)Windows上で表示(予定)  http://localhost:8080/examples/servlet/ファイル名 エラー内容: (1)Exception in thread "main" ava.lang.NoClassDefFound Error;【class名】 (2)Something unusual has occured to cause the driver to fail.Pleas report this exception:Exception:java.sql.SQLException:FATAL1: No pg_hda.conf entry for host 127.0.0.1,user postgres,database 【database名】 Staek Trace: at ~ が5行 Endof Stack Trace at ~ が4行 Linux・PostgreSQL・Javaすべてまったくの初心者です。 アドバイスよろしくお願いします。

  • PHPとPostgreSQL接続 (スキーマ)

    いつもお世話になっております。 現在、PHP(5.3.1)とPostgreSQL(9.2)で開発をしております。 エラーが発生しており大変困っております。 こちらが発生するエラーです。 Warning: pg_exec() [function.pg-exec]: Query failed: ERROR: schema スキーマが見つからないとのことです。 そして、以下がコードとなります。 <?php // PostgreSQL Connect if (!($cn = pg_connect("host=*** port=*** user=*** password=*** dbname=***"))) { die; } // PostgreSQL Select $sql = "select * from t_test.na1"; if (!($rs = pg_exec($sql))) { die; } // PostgreSQL Get Records $ct = pg_numrows($rs); for ($i = 0; $i < $ct; $i++) { $item = pg_fetch_array($rs, $i); $txt = "${item[1]}"; } // PostgreSQL Disconnect pg_close($cn); ?> 現在のデータベースのスキーマについてですが「na1」と「public」の2つが存在しています。 試しに、na1とpublicのテーブルをまったく同じにして SQLの部分を「select * from t_test」に変更すると「public」側のテーブルが覗けます。 しかし、SQLの部分を「select * from t_test.na1」に変更すると「スキーマが見つかりません」 というエラーが発生してしまいます。 スキーマがあるにもかかわらずこのエラーがでてしまうため原因が分からず困っております。 もしお分かりになる方いらっしゃいましたら、教えていただければと思います。 何卒よろしくお願いします。

    • ベストアンサー
    • PHP
  • postgreSQLでテーブルの閲覧ができない

    環境 Windows7 64bit Access2010(試用版) 会社で使用しているシステム(Access2002)をAccess2010の環境で使用した場合の 動作チェックおよび改修を行っています。 PstgreSQLというものを使用しています。 (PstgreSQLについては詳しく知りません。) PostgreSQLのODBC接続を利用してリンクテーブルを作成しています。 Windows7での使用のために下記URLの手順でインストールを行ったところ、無事接続できました。 http://blogs.yahoo.co.jp/kensinisnek/10176003.html ところが、いくつかあるリンクテーブルのうちの1つだけ、「ODBC接続に失敗しました」と メッセージが出てきて閲覧できません。 このテーブルだけリンク先が違うということはなく、すべて同じDSNを使用してのODBC接続です。 また、AccessファイルにはVBA、マクロ、クエリ、フォームはなく、いくつかのリンクテーブルがあるだけです。 同じDSNを使用しているのに1テーブルだけ閲覧できないということはあり得るのでしょうか? また、何が原因なのでしょうか? 別のDSNを使用しましたが、Windows XP、Access2002の環境ではすべてのテーブルを閲覧できました。