2016-06-20 198 views
0

上个月我从mysqldump数据库获得了一个sql文件。现在,在数据库中的所有表都添加一个额外的列,说:mysql:为插入设置列默认值

country varchar(20) not null. 

如何导入转储文件与国家数据库设置为“美国”?该数据库有来自其他国家的数据,因此数据库不能被删除和重新创建。

手动我需要做两两件事来转储SQL文件:

1. remove all create table statements, 
2. add country("US") to all insert statements. 

但SQL转储文件是巨大的。有没有一个很好的方法来实现这一目标? 谢谢。

+1

的转储文件不包含列'country',对不对?你想在所有的值为'US'的表中添加'country'列吗?我对吗? – 1000111

+0

执行此操作的最简单的方法可能是为“country”列设置默认值,但这需要您可以发出“ALTER TABLE”语句,并且值“US”对每个人都是可取的。 –

+0

我会找到与此相关的N个表,将转储复制到另一个文件名。使用find-and-replace-all将这些表名调整为那些N的新表名。注意,这些将是新的表名。运行该脚本。现在你的数据库有N个只有美国的新表。继续。继续意思是你之后的意思是做什么(比如,插入其他表格?插入到其他表格上?美国作为插入文字?) – Drew

回答

0

ALTER TABLE your_table ADD国家VARCHAR(20),默认的 “US”

+0

数据库运行在Web应用程序后面,许多用户在同一时间访问它。它涉及大约200张桌子。改变表格安全吗?有没有任何编程方式(工具)来处理转储的sql文件?谢谢。 – Dave

+0

我认为alter_table是最好的选择。使用较少的用户在几个小时内完成您的操作,并使用日志记录转储期间的查询。您可以使用脚本遍历所有表并进行更新。如果你没有你的操作日志,你可以在unix下使用diff比较两个文件之间的差异,保存差异并使查询具有更新的数据库 – CiroRa