1

我想显示或搜索数据库中以名称“bar”开头的所有表。这是我可以通过命令行做的事情吗?

我正在使用informix。

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%'which 匹配包含名称中bar任何位置的表名,而不仅仅是以开头的表名bar(尽管它也会选择那些)。informix.SysTables即使dbname(数据库)碰巧是 MODE ANSI 数据库,使用确保查询也能正常工作。如果没有所有者名称,则查询仅适用于由 user 运行的 MODE ANSI 数据库informix

用于查询随 Informix 分发的数据库的主要命令行工具是dbaccess. 第一个参数是数据库名,第二个-(的行数到仅包含 的行。周围的单引号表示“在调用输入时不要对 'here-document' 中的材料进行任何 shell 扩展。如果您的脚本选择数据库,您可以在命令行上使用 a 代替数据库名称. 如果你在没有类似选项的情况下运行,那么它会以类似诅咒的交互模式运行。-<<'EOF'EOF'EOF'-dbaccess

您将从dbaccess中获得表格输出。您通常可以使用“输出”命令改进输出:

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 回答