我想显示或搜索数据库中以名称' bar'开头的所有表格。这是我可以通过命令行做的事情吗?
我正在使用informix。
答案 0 :(得分:3)
select tabname from systables where tabname like "%bar%"
找到它了!
答案 1 :(得分:2)
基本答案是针对系统目录的查询(如answer user856753所示)。如果您想确保对所有类型的Informix数据库起作用,那么您可能会使用:
dbaccess dbname - <<'EOF'
SELECT TabName FROM informix.SysTables WHERE TabName LIKE 'bar%';
EOF
请注意,其他答案中的查询使用的LIKE '%bar%'
与名称中包含bar
的表名匹配,而不仅仅是以bar
开头的名称(尽管它选择了这些名称)太)。 informix.SysTables
的使用确保即使dbname
(数据库)碰巧是MODE ANSI数据库,查询也会起作用。如果没有所有者名称,则查询仅对用户informix
运行的MODE ANSI数据库起作用。
用于查询与Informix一起分发的数据库的主命令行工具是dbaccess
。第一个参数是数据库名称,第二个参数(-
)是脚本的名称(在这种情况下,-
表示“读取标准输入”)和<<'EOF'
表示法是shell代表'这个命令的标准输入是直到包含EOF
的行的一组行。 'EOF'
周围的单引号表示“在调用输入时,不会对'here-document'中的材料执行任何shell扩展。如果脚本选择了数据库,则可以使用-
代替命令行上的数据库名称。如果运行dbaccess
没有这样的选项,那么它将以类似curses的交互模式运行。
您将从dbaccess
获得表格输出。您通常可以使用'OUTPUT'命令改善输出:
dbaccess dbname - <<'EOF'
OUTPUT TO '/dev/null' WITHOUT HEADINGS
SELECT TabName FROM informix.SysTables WHERE TabName LIKE 'bar%';
EOF