在数据库中搜索“某处”字符串

时间:2009-03-13 15:10:50

标签: database string postgresql search

这是我的问题:我第一次看某人的基于Postgresql的数据库应用程序,并试图找到导致系统日志文件中某些警告/错误的原因。我对数据库架构一无所知。我对源代码一无所知。但我需要追查问题。

我可以使用UNIX命令'grep'轻松搜索基于文本文件的字符串内容,如php和perl。即使对于已编译的二进制文件,我也可以使用UNIX命令'find'和'strings'。

我的问题是日志文件中生成的一些文本来自数据库本身。检查数据库的错误日志文件没有任何用处,因为应用程序使用的查询没有问题。

我想要做的是详尽地搜索数据库的所有列和所有表中的字符串。这有可能,怎么样?

提前感谢任何指针。使用的环境是Postgresql 8.2,但知道如何在其他类型的关系数据库中执行此操作也很有用。

3 个答案:

答案 0 :(得分:11)

它可能不是最佳的,但由于我已经知道如何grep文本文件,我只是将数据库转换为文本文件并grep。在这种情况下,将数据库转换为文本文件意味着使用pg_dump转储数据。

最快/最简单/最有效的方式并不总是优雅......

答案 1 :(得分:1)

我不熟悉Postgresql,但我认为,就像SQL Server一样,它有描述数据库模式的元数据表/视图(对于SQL Server 2005+,我会指向sys .tables和sys.columns)。想法是基于表模式生成一系列临时查询,每个查询在特定的表/字段组合中找到匹配并将匹配抽取到“日志”表中。

答案 2 :(得分:1)

我过去曾使用this的变体。