1

名前が「bar」で始まるデータベース内のすべてのテーブルを表示または検索したいと考えています。それはコマンドラインからできることですか?

インフォミックスを使用しています。

4

2 に答える 2

3
select tabname from systables where tabname like "%bar%"

それを見つけた!

于 2012-05-01T19:37:48.987 に答える
2

基本的な回答は、システム カタログに対するクエリです ( user856753による回答に示されているように)。すべてのタイプの Informix データベースに対して確実に動作するようにしたい場合は、おそらく次を使用します。

dbaccess dbname - <<'EOF'
SELECT TabName FROM informix.SysTables WHERE TabName LIKE 'bar%';
EOF

他の回答のクエリは、で始まるものだけでなく、名前のどこかにLIKE '%bar%'含まれるテーブル名と一致するものを使用することに注意してください(ただし、それらも選択します)。を使用すると、 (データベースが)たまたま MODE ANSI データベースであっても、クエリが機能することが保証されます。所有者名がない場合、ユーザーが実行した場合、クエリは MODE ANSI データベースに対してのみ機能します。barbarinformix.SysTablesdbnameinformix

Informix で配布されているデータベースを照会するための主なコマンド ライン ツールは、dbaccess. 最初の引数はデータベース名、2 番目の ( -) はスクリプトの名前 (この場合-は「標準入力を読み取る」を意味します) であり、<<'EOF'表記法は「このコマンドの標準入力がセットである」のシェルスピークです。だけを含む行までの行EOF。意味を囲む一重引用符は、'EOF'「入力が呼び出されたときに「ヒアドキュメント」の素材に対してシェル展開を行わないことを意味します。スクリプトでデータベースを選択する場合は-、コマンドラインでデータベース名の代わりにa を使用できます。そのようなオプションなしで実行dbaccessすると、curses のような対話モードで実行されます。

これにより、表形式の出力が得られますdbaccess。多くの場合、「OUTPUT」コマンドを使用して出力を改善できます。

dbaccess dbname - <<'EOF'
OUTPUT TO '/dev/null' WITHOUT HEADINGS
    SELECT TabName FROM informix.SysTables WHERE TabName LIKE 'bar%';
EOF
于 2012-05-03T21:28:05.660 に答える