导入前更改mysqldump文件

时间:2010-06-11 14:42:45

标签: sql mysql

我有一个从早期版本的产品创建的mysqldump文件无法导入到该产品的新版本中,因为db结构略有改变(主要是将NOT NULL DEFAULT 0的列更改为UNIQUE KEY DEFAULT NULL)。

如果我只导入旧的转储文件,它将会出错,因为默认值为0的列现在会破坏UNIQUE约束。

手动更改mysqldump文件或导入临时表并更改它,然后复制到新表就很容易了。但是,有没有办法以编程方式执行此操作,因此它将是可重复的而不是手动的? (这需要在本产品的许多实例中发生)。

我正在考虑禁用导入的关键约束,然后将所有值= 0设置为NULL,然后重新启用键约束?

这可能吗?任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:3)

是。

SET UNIQUE_CHECKS = 0;关闭唯一键约束
SET FOREIGN_KEY_CHECKS = 0;关闭外键约束

导入文件 将0更新为Null

SET UNIQUE_CHECKS = 1重新开启 SET FOREIGN_KEY_CHECKS = 1重新开启

答案 1 :(得分:0)

您可以使用sed并以自动,可重复的方式修改dumpfile。

sed s/NOT NULL DEFAULT 0/UNIQUE KEY DEFAULT NULL/g

或类似的东西。