我负责查找存储在sybase数据库中的一些数据。这是因为模式是未知的,并且没有人知道数据库结构。这些名字也很模糊,不相关。我有权访问的是ISQL。
是否有查询在每个表的所有列中搜索此字符串? 或者有没有办法将数据库转储为人类可读的格式,然后搜索输出?
感谢。
答案 0 :(得分:0)
我假设您可以使用iSQL将SQL查询发送到您的数据库。如果是这样,数据库结构本身存储在一个名为sysobjects的表中,您可以使用
之类的查询SELECT * FROM sysobjects WHERE type = 'U'
例如,获取表格列表。 This post提供了许多有关如何从sybase数据库获取表等列表的有用信息。
从那里,您应该能够构造一个递归查询所有用户表的查询。
答案 1 :(得分:0)
@Astrum,
请确认我正确理解您的情况:
如果是这样,那么最好BCP输出你的数据,然后通过它们进行grep。
$ isql << EOF > tables.txt
select name from sysobjects
where type = 'U'
go
EOF
$ for table in `cat tables.txt`
do
bcp $table out $table.dat -c
done
$ grep 'ABCXYZ' *.dat
此策略的优势在于您现在可以获得所有数据的副本,以便进行进一步分析。
希望有所帮助。
答案 2 :(得分:0)
select object_name(id) as tableName
from syscolumns
where name = "XXX"
此查询将返回所有包含列&#34; XXX&#34;的表。您也可以像使用&#34;%XXX%&#34;。
这样的名称使用类似的操作