显示以特定字符开头的所有表

时间:2012-05-01 17:54:57

标签: unix informix

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

我正在使用informix。

2 个答案:

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