これは恥ずかしいことですが、DB2データベース内のテーブルの名前をリストする方法を見つけることができないようです。ここに私が試したものがあります:
root@VO11555:~# su - db2inst1
root@VO11555:~# . ~db2inst1/sqllib/db2profile
root@VO11555:~# LIST ACTIVE DATABASES
次のエラーが表示されます:SQL1092N "ROOT" does not have the authority to perform the requested command or operation.
DB2バージョン番号が続きます。
root @ VO11555:〜#db2level DB21085Iインスタンス「db2inst1」は「64」ビットを使用し、DB2コードリリースは「SQL09071」 レベル識別子「08020107」を使用します。 情報トークンは「 DB2 v9.7.0.1 "、" s091114 "、" IP23034 "、およびフィックスパック " 1 "。 製品は" /opt/db2V9.7 "にインストールされます。
DB2の現在のデータベースのテーブルのリストを取得するには->
データベースに接続します。
db2 connect to DATABASENAME user USER using PASSWORD
このクエリを実行します。
db2 LIST TABLES
これは、MySQLのSHOW TABLESと同等です。
List tablesコマンドを実行する前に、「set schema myschema」を正しいスキーマに実行する必要がある場合があります。ログイン時のデフォルトでは、スキーマはユーザー名と同じです-多くの場合、テーブルは含まれません。 「現在のスキーマの値」を使用して、現在設定されているスキーマを確認できます。
データベースに接続します。
db2 connect to <database-name>
すべてのテーブルをリストします。
db2 list tables for all
選択したスキーマのすべてのテーブルをリストするには、次を使用します。
db2 list tables for schema <schema-name>
テーブルを説明するには、次を入力します。
db2 describe table <table-schema.table-name>
select * from syscat.tables where type = 'T'
クエリをタブスキーマに制限することができます
Db2 7.1とSQuirrelを使用しています。これは私のために働いた唯一のクエリです。
select * from SYSIBM.tables where table_schema = 'my_schema' and table_type = 'BASE TABLE';
任意のシェルセッションで次のコマンドラインを実行します。
db2 "select tabname from syscat.tables where owner = 'DB2INST1'"
所有者名を変更し、現在の所有者のリストを確認する必要がある場合がありますか?
db2 "select distinct owner from syscat.tables"
ユーザーdb2inst2をインストールしましたか?