我想在一个整个数据库中进行查找和替换而不仅仅是一个表.
我怎样才能改变下面的脚本工作?
update [table_name] set [field_name] = replace([field_name],'[string_to_find]','[string_to_replace]');
Run Code Online (Sandbox Code Playgroud)
我只是使用星号吗?
update * set [field_name] = replace([field_name],'[string_to_find]','[string_to_replace]');
Run Code Online (Sandbox Code Playgroud)
Dea*_*her 126
sqldump到文本文件,查找/替换,重新导入sqldump.
将数据库转储到文本文件
mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql
对数据库进行更改后还原数据库.
mysql -u root -p[root_password] [database_name] < dumpfilename.sql
小智 39
在word-press mysql查询中将旧URL更新为新URL:
UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');
UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_posts SET post_excerpt = replace(post_excerpt, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');
Run Code Online (Sandbox Code Playgroud)
为什么?
因为您的数据库很有可能包含序列化数据(尤其是wp_options表),因此仅使用“替换”可能会破坏数据。
使用推荐的序列化:https://puvox.software/tools/wordpress-migrator
这强烈暗示您的数据一开始就没有标准化.
这样的东西应该工作(注意,你没有提到你使用任何其他语言 - 所以它写成MySQL存储过程)
create procedure replace_all(find varchar(255),
replce varchar(255),
indb varcv=char(255))
DECLARE loopdone INTEGER DEFAULT 0;
DECLARE currtable varchar(100);
DECLARE alltables CURSOR FOR SELECT t.tablename, c.column_name
FROM information_schema.tables t,
information_schema.columns c
WHERE t.table_schema=indb
AND c.table_schema=indb
AND t.table_name=c.table_name;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET loopdone = 1;
OPEN alltables;
tableloop: LOOP
FETCH alltables INTO currtable, currcol;
IF (loopdone>0) THEN LEAVE LOOP;
END IF;
SET stmt=CONCAT('UPDATE ',
indb, '.', currtable, ' SET ',
currcol, ' = word_sub(\'', find,
'\','\'', replce, '\') WHERE ',
currcol, ' LIKE \'%', find, '%\'');
PREPARE s1 FROM stmt;
EXECUTE s1;
DEALLOCATE PREPARE s1;
END LOOP;
END //
Run Code Online (Sandbox Code Playgroud)
我将留给你研究如何声明word_sub函数.
归档时间: |
|
查看次数: |
127382 次 |
最近记录: |