我试图弄清楚如何在数据库中定位一个url的所有事件。我想搜索所有表和所有字段。但我不知道从哪里开始,甚至不知道是否有可能。


当前回答

在phpMyAdmin的搜索功能是可用的:

选择特定的数据库而不是表。 点击“搜索”标签 输入你想要的搜索词 选择要搜索的表

phpMyAdmin屏幕截图:

'Search'特性也可以在MySQL Workbench中使用:

数据库菜单>查询表数据 选择要搜索的数据库和表(只会在选定的表中搜索) 在搜索中你可以使用wildChars。

MySQL Workbench屏幕截图:

其他回答

这不是一个优雅的解决方案,但可以通过嵌套循环结构来实现

// select tables from database and store in an array

// loop through the array
foreach table in database
{
    // select columns in the table and store in an array

    // loop through the array
    foreach column in table
    {
        // select * from table where column = url
    }
}

您可以通过在构建列数组时检查哪些列包含字符串,以及将每个表的所有列合并在一个用逗号分隔的WHERE子句中来加快此过程。

使用MySQL Workbench,您可以从"Database" -> " search Table Data"菜单选项中搜索字符串。

指定LIKE %URL_TO_SEARCH%,并在左侧选择要搜索的所有表。您可以使用“Cntrl + A”选择左侧的整个树,然后取消选择您不关心的对象。

您可以通过使用HeidiSQL而不生成Db转储来实现这一点

步骤:

1)在GUI左侧面板中选择需要搜索的数据库。

2)导出>导出数据库为SQL

3)在表格工具窗口中选择“查找文本”选项卡。

4)提供你的字符串进行搜索,然后点击“FIND”。

5)它将列出所有包含我们字符串的表。

6)选择相关度%较高的行。

7)点击“查看结果”

在unix机器中,如果数据库不是太大:

mysqldump -u <username> -p <password> <database_name> --extended=FALSE | grep <String to search> | less -S

一个简单的解决方案是这样做的:

mysqldump -u myuser --no-create-info --extended-insert=FALSE databasename | grep -i "<search string>"