在Sybase数据库中搜索每个表中的每一列中的字符串

时间:2014-11-06 22:37:48

标签: sql database string search sybase

我负责查找存储在sybase数据库中的一些数据。这是因为模式是未知的,并且没有人知道数据库结构。这些名字也很模糊,不相关。我有权访问的是ISQL。

是否有查询在每个表的所有列中搜索此字符串? 或者有没有办法将数据库转储为人类可读的格式,然后搜索输出?

感谢。

3 个答案:

答案 0 :(得分:0)

我假设您可以使用iSQL将SQL查询发送到您的数据库。如果是这样,数据库结构本身存储在一个名为sysobjects的表中,您可以使用

之类的查询
SELECT * FROM sysobjects WHERE type = 'U'

例如,获取表格列表。 This post提供了许多有关如何从sybase数据库获取表等列表的有用信息。

从那里,您应该能够构造一个递归查询所有用户表的查询。

答案 1 :(得分:0)

@Astrum,

请确认我正确理解您的情况:

  • 你有一些给定的搜索字符串" ABCXYZ"
  • 您想在任何表格的任何列中进行搜索
  • 您不知道列或表的名称

如果是这样,那么最好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;。

这样的名称使用类似的操作