如何批量替换 MySQL 中 PHP 序列化后的数据

2020-05-19 23:00:12 +08:00
 Kei001

我有一些数据是用 php 数组序列化后存储在 MySQL 中,现在想在数据库里替换掉数组中的一些字符串内容。

比方说,我现在序列化数组中有包含了 www.aa.com ,现在想把它批量替换成 www.aaa.com

UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://www.aa.com', 'http://www.aaa.com')

无法直接用这条 MySQL 命令直接改,因为 php 序列化数组还包含了字符串长度,替换会增加字符串长度而导致不匹配无法正常反序列化。

求教各位大佬有没有其他方法解决这个问题。

2875 次点击
所在节点    MySQL
2 条回复
foam
2020-05-20 00:43:52 +08:00
别想那么多,用脚本读出来,修改后再写回去。
hsk9044
2020-05-20 09:48:03 +08:00
最好还是读出来反序列化再写回去, 因为替换序列化后的文本复杂度肯定比较高, 这个时候不管是从性能的角度还是从开发速度的角度, 用 sql 语句的效率都没有直接用程序写的高

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/673397

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX