MySQL:整个数据库,将[empty]值转换为NULL

时间:2010-11-05 12:47:56

标签: php mysql

我正在处理一个混合了NULL''(空)值的数据库。我想将所有空值转换为NULL

类似

UPDATE table SET col=NULL WHERE col=''

但是对于整个数据库


注释:

  • 我已将默认值更改为NULL

  • 我很清楚NULL与''辩论,这不是我真正想要讨论的内容(关于SO的其他许多问题)

3 个答案:

答案 0 :(得分:2)

可能有一个更好的解决方案,但你总是可以对基数进行mysql转储,然后解析.sql文件,用'NULL替换''。对于解析,你可以使用自定义的php脚本,或者其他一些方式 - 那部分不应该很难:)

答案 1 :(得分:2)

这对我有用:

$tables = {array of table names};

foreach($tables as $t){
    $cols = FALSE;
    $q = "SELECT * FROM $t LIMIT 1";
    $res = mysql_query($q);
    while ($r = mysql_fetch_array($res, MYSQL_ASSOC)){    
        $cols = array_keys($r);
    }
    if($cols){
        foreach($cols as $c){
            $q2 = "UPDATE $t SET $c=NULL WHERE $c = ''";
            mysql_query($q2);
            echo mysql_error();
        }
    } 
}

答案 2 :(得分:1)

最快的方法可能是使用文本编辑器转储,搜索/替换,然后加载。