使用php解析mysql转储文件中的值?

时间:2011-09-21 16:18:32

标签: php mysqldump

是否有PHP的脚本或类来解析mysql转储文件中的插入值?我写了一个脚本来按导出来的数据。我想解析所有的值来做一些一致性测试,我想知道这个问题是否已经解决了。

例如,在转储文件中,我有

INSERT INTO table ( field1, field2, ... ) VALUES ( "a", "B", ...);

我要提取

a
B

测试这些值,看看它们是我认为它们应该是什么。

我还需要这个能够处理扩展插入格式,即VALUES ( "a", "B", ...), ( "c", "D", ...), ( "e", "F", ...),

2 个答案:

答案 0 :(得分:2)

php-sql-parser应该做你想要的。以下是其手册的链接:

http://code.google.com/p/php-sql-parser/wiki/ParserManual

答案 1 :(得分:0)

鉴于您的意见,我想提供一些提示,说明我认为处理此问题的最佳方法。

  1. 您不应将序列化数据存储在关系数据库中。相反,您应该规范化数据,以便充分利用关系数据库提供的功能。我不知道你的项目有多深,但如果可能的话,我强烈建议你进行重构。

  2. 如果您必须继续存储/使用序列化数据(强烈建议不要这样做),我会考虑完全避免转储,并使用以下内容:

  3. 在PHP中处理数据,然后直接更新:

    $tables = $db->query("SHOW tables");
    foreach ($tables as $table) {
        $rows = $db->query("SELECT * FROM $table");
        foreach ($rows as $row) {
            $foo = unserialize($row['foo']);
            $foo = massage($foo);
            $db->query("UPDATE $table SET foo=$foo");
        }
    }