database - 如何在整个数据库中查找某个字符串?

标签 database search informix

我有一个由大量表组成的 informix 数据库。

我知道某个表中的某处有一个字符串“example”,但不知道它是哪个表或哪一列。 (我知道这是非常罕见的情况)

由于表数量较多,无法手动查找。我如何在这个大型数据库中找到这个值?有什么查询可以找到吗?

提前致谢!

最佳答案

通常,您有两种方法。

一种方法是将每个表转储到单独的文本文件中并 grep 这些文件。这可以在小型数据库上手动完成,或者在较大数据库的情况下通过脚本完成。查看 UNLOAD 和 dbaccess。 BASH 脚本中的示例:(您需要在脚本中静态或通过查询生成表列表。)

unload_tables () {

for table in ${TABLE_LIST} do
    dbaccess database_name << EOF
    unload to "${OUT_PATH}/${table}/.out"
    select * from $table;
    EOF
done
}

或者,这有点复杂。您可以使用 systablessyscolumns 以类似的自动化方式为数据库中的每个表和列创建特定的 SELECT(按“example”过滤每个列),然后运行每个sql。

例如,此查询显示所有表中的所有列:

SELECT tabname, colno, colname, coltype, collength
FROM systables a, syscolumns b 
WHERE a.tabid = b.tabid

很容易对此进行调整,以便 SELECT 返回格式正确的 SQL 字符串,该字符串允许您查询数据库以查找与“example”的匹配项。抱歉,我还没有准备好完整的解决方案,但是如果您在 google 上搜索“informix systables syscolumns”,您会看到很多使用此信息的方法。

关于database - 如何在整个数据库中查找某个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/536721/

相关文章:

sql - 将日期时间值插入到 informix 表中失败

ios - 当 firebase 数据库中的值发生变化时创建推送通知

ios - 在解析iOS中搜索1000多个查询

sql - 如何在 Informix 上将二进制 blob 写入磁盘

在有序列表中获取唯一相邻整数的 Pythonic 方法

search - 提高 Elasticsearch 中的特定字段值

sql - 添加一行以在最后一列显示总和

php - 自定义 Magento 订单字段和 Magento 数据库

php - 在 php 中使用 jquery 变量值?

mysql - 将数据从一个 MySQL 表传输到另一个带参数的表