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


当前回答

SQLyog是基于GUI的解决方案,可以跨所有列、表和数据库进行数据搜索。用户可以自定义搜索,将其限制为字段、表和数据库。

在它的数据搜索功能中,用户可以像使用谷歌一样搜索字符串。

其他回答

如果你可以使用bash -这里有一个脚本: 它需要一个用户dbread,并在数据库上传递dbread。

#!/bin/bash
IFS='
'
DBUSER=dbread
DBPASS=dbread
echo -n "Which database do you want to search in (press 0 to see all databases): " 
read DB
echo -n "Which string do you want to search: " 
read SEARCHSTRING
for i in `mysql $DB -u$DBUSER -p$DBPASS -e "show tables" | grep -v \`mysql $DB -u$DBUSER -p$DBPASS -e "show tables" | head -1\``
do
for k in `mysql $DB -u$DBUSER -p$DBPASS -e "desc $i" | grep -v \`mysql $DB -u$DBUSER -p$DBPASS -e "desc $i" | head -1\` | grep -v int | awk '{print $1}'`
do
if [ `mysql $DB -u$DBUSER -p$DBPASS -e "Select * from $i where $k='$SEARCHSTRING'" | wc -l` -gt 1 ]
then
echo " Your searchstring was found in table $i, column $k"
fi
done
done

如果有人想要一个解释:http://infofreund.de/?p=1670

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

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

SQLyog是基于GUI的解决方案,可以跨所有列、表和数据库进行数据搜索。用户可以自定义搜索,将其限制为字段、表和数据库。

在它的数据搜索功能中,用户可以像使用谷歌一样搜索字符串。

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

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

Scott给出了一个很好的例子,但问题是你为什么要这么做?如果您需要对特定字符串执行查找-替换操作,您还可以尝试对数据库执行mysqldump,在编辑器中执行查找-替换操作,然后重新加载数据库。

也许如果你给出一些你想要达到的目标的背景,其他人可能会提供更好的答案。