【问题标题】:Searching for a string 'somewhere' in a database在数据库中搜索字符串“某处”
【发布时间】:2010-10-13 04:34:58
【问题描述】:

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

我可以使用 UNIX 命令“grep”轻松搜索基于文本文件的代码(如 php 和 perl)的字符串内容;即使对于已编译的二进制文件,我也可以使用 UNIX 命令“查找”和“字符串”。

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

我想做的是彻底搜索数据库的所有列和所有表以查找字符串。这可能吗?如何实现?

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

【问题讨论】:

    标签: database string postgresql search


    【解决方案1】:

    我不熟悉 Postgresql,但我认为它与 SQL Server 一样,具有描述数据库架构的元数据表/视图(对于 SQL Server 2005+,我将您推荐给 sys .tables 和 sys.columns)。这个想法是基于表模式生成一系列即席查询,每个查询都在特定的表/字段组合中查找匹配项,并将匹配项泵入“日志”表中。

    【讨论】:

      【解决方案2】:

      我过去曾使用过this 的变体。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 又快又脏:我喜欢。这个解决方案非常适合我们这些更熟悉正则表达式而不是 SQL 查询和函数的人。谢谢!
        猜你喜欢
        • 1970-01-01
        • 2021-01-22
        • 1970-01-01
        • 1970-01-01
        • 2012-11-11
        • 1970-01-01
        • 2014-07-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多