› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
Kei001
V2EX  ›  MySQL

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

  •  
  •   Kei001 · May 19, 2020 · 3769 views
    This topic created in 2320 days ago, the information mentioned may be changed or developed.

    我有一些数据是用 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 序列化数组还包含了字符串长度,替换会增加字符串长度而导致不匹配无法正常反序列化。

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

    2 replies  •  2020-05-20 09:48:03 +08:00
    foam
        1
    foam  
       May 20, 2020 via Android
    别想那么多,用脚本读出来,修改后再写回去。
    hsk9044
        2
    hsk9044  
       May 20, 2020
    最好还是读出来反序列化再写回去, 因为替换序列化后的文本复杂度肯定比较高, 这个时候不管是从性能的角度还是从开发速度的角度, 用 sql 语句的效率都没有直接用程序写的高
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2588 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 314ms · UTC 11:45 · PVG 19:45 · LAX 04:45 · JFK 07:45
    ♥ Do have faith in what you're doing.