Pao*_*ino 197
一个简单的解决方案是做这样的事情:
mysqldump -u myuser --no-create-info --extended-insert=FALSE databasename | grep -i "<search string>"
Run Code Online (Sandbox Code Playgroud)
然后你可以在myfile.sql上找到你想要的URL.
mur*_*dev 94
在phpMyAdmin中,可以使用"搜索"功能:
phpMyAdmin屏幕截图:

MySQL Workbench中也提供了"搜索"功能:
MySQL Workbench屏幕截图:

小智 61
我知道的旧帖子,但对于其他通过Google发现这个的帖子,如果你安装了phpmyadmin,它有一个全局搜索功能.
Gur*_*eet 17
使用MySQL Workbench,您可以从"数据库" - >"搜索表数据"菜单选项中搜索字符串.
指定LIKE%URL_TO_SEARCH%,并在左侧选择要搜索的所有表.您可以使用"Cntrl + A"选择左侧的整个树,然后取消选择您不关心的对象.

Mik*_*keW 13
蛮力方法
declare @url varchar(255)
set @url = 'stackoverflow.com'
select 'select * from ' + rtrim(tbl.name) + ' where ' +
rtrim(col.name) + ' like %' + rtrim(@url) + '%'
from sysobjects tbl
inner join syscolumns col on tbl.id = col.id
and col.xtype in (167, 175, 231, 239) -- (n)char and (n)varchar, there may be others to include
and col.length > 30 -- arbitrary min length into which you might store a URL
where tbl.type = 'U' -- user defined table
Run Code Online (Sandbox Code Playgroud)
这将创建一个可以在数据库上执行的脚本.
select * from table1 where col1 like '%stackoverflow.com%'
select * from table1 where col2 like '%stackoverflow.com%'
select * from table2 where col3 like '%stackoverflow.com%'
Run Code Online (Sandbox Code Playgroud)
等等
小智 7
当我们在Wordpress网站上更改域名时,我一直在寻找这个.没有一些编程就无法完成,所以这就是我所做的.
<?php
header("Content-Type: text/plain");
$host = "localhost";
$username = "root";
$password = "";
$database = "mydatabase";
$string_to_replace = 'old.example.com';
$new_string = 'new.example.com';
// Connect to database server
mysql_connect($host, $username, $password);
// Select database
mysql_select_db($database);
// List all tables in database
$sql = "SHOW TABLES FROM ".$database;
$tables_result = mysql_query($sql);
if (!$tables_result) {
echo "Database error, could not list tables\nMySQL error: " . mysql_error();
exit;
}
echo "In these fields '$string_to_replace' have been replaced with '$new_string'\n\n";
while ($table = mysql_fetch_row($tables_result)) {
echo "Table: {$table[0]}\n";
$fields_result = mysql_query("SHOW COLUMNS FROM ".$table[0]);
if (!$fields_result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
if (mysql_num_rows($fields_result) > 0) {
while ($field = mysql_fetch_assoc($fields_result)) {
if (stripos($field['Type'], "VARCHAR") !== false || stripos($field['Type'], "TEXT") !== false) {
echo " ".$field['Field']."\n";
$sql = "UPDATE ".$table[0]." SET ".$field['Field']." = replace(".$field['Field'].", '$string_to_replace', '$new_string')";
mysql_query($sql);
}
}
echo "\n";
}
}
mysql_free_result($tables_result);
?>
Run Code Online (Sandbox Code Playgroud)
希望它可以帮助那些在未来遇到这个问题的人:)
MikeW 提出了一个有趣的解决方案,但正如评论中提到的,它是一个 SQL Server 解决方案,而不是一个 MySQL 解决方案。这是一个 MySQL 解决方案:
use information_schema;
set @q = 'Boston';
set @t = 'my_db';
select CONCAT('use \'',@q,'\';') as q UNION
select CONCAT('select \'', tbl.`TABLE_NAME`,'\' as TableName, \'', col.`COLUMN_NAME`,'\' as Col, `',col.`COLUMN_NAME`,'` as value from `' , tbl.`TABLE_NAME`,'` where `' ,
col.`COLUMN_NAME` , '` like \'%' ,@q, '%\' UNION') AS q
from `tables` tbl
inner join `columns` col on tbl.`TABLE_NAME` = col.`TABLE_NAME`and col.DATA_TYPE='varchar'
where tbl.TABLE_SCHEMA = @t ;
Run Code Online (Sandbox Code Playgroud)
找到一种方法,有两个(2)易码在这里。首先做一个mysqldump:
mysqldump -uUSERNAME -p DATABASE_NAME > database-dump.sql
Run Code Online (Sandbox Code Playgroud)
然后grep sqldump 文件:
grep -i "Search string" database-dump.sql
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
275367 次 |
| 最近记录: |