oid2nameコマンドでoidを取得する

PostgreSQLのoid2nameコマンドを使用してテーブルやデータベースのoidを取得できる。

DBの一覧

DBを指定せずにoid2nameを実行すると、全てのデータベースの一覧が表示される。

$ oid2name -U ユーザ名
All databases:
    Oid   Database Name  Tablespace
-----------------------------------
  14042        postgres  pg_default
  14041       template0  pg_default
      1       template1  pg_default
  16384          testdb  pg_default
  16430           todos  pg_default

テーブルの一覧

-dオプションを使用して特定のデータベースのテーブル一覧を取得できる。
デフォルトではoidが表示されないため-x(詳細表示)オプションを追加して実行する。

$ oid2name -U ユーザ名 -d testdb -x
From database "testdb":
  Filenode  Table Name    Oid  Schema  Tablespace
-------------------------------------------------
     16413       users  16405  public  pg_default
...

特定のテーブルのoid

テーブル名がわかっている場合は-tオプションを使用して直接oidを取得できる。

$ oid2name -U ユーザ名 -d testdb -t users -x
From database "testdb":
  Filenode  Table Name    Oid  Schema  Tablespace
-------------------------------------------------
     16413       users  16405  public  pg_default

SQLクエリでoidを取得する

PostgreSQLのシステムカタログを使用して、SQLクエリでテーブルやデータベースのoidを取得できる。

データベースのoidを取得

pg_databaseシステムカタログを使用して、データベースのoidを取得できる。

SELECT oid, datname FROM pg_database;
  oid  |    datname
-------+----------------
 14042 | postgres
 16384 | testdb
     1 | template1
 14041 | template0
 16430 | todos
(5 rows)

テーブルのoidを取得

pg_classシステムカタログを使用して、テーブルのoidを取得できる。

SELECT oid, relname FROM pg_class WHERE relname = 'users';
  oid  | relname
-------+---------
 16405 | users
(1 row)