mysql数据库,亿级别数据量,修改表结构中的字段类型,求可实行方案 mysql数据库,亿级别数据量,修改表结构中的字段类型,求可实行方案这个问题困扰我很多天了,用了一些方法,都不太可行。大虾,高手们,给个偏方吧。谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接改,似乎不太可行。不如根据原来的表结构以及你要改的字段类型创建一个新的表:原表为t, 新表为t21. create table t2(col1,....colN)其中包括你修正以后的某字段2. insert into t2 select * from t3. 将原表重命名备份: rename t to t_orig;4. 将新表重命名为原表 rename t2 to t; TO iihero ,谢谢TO ACMAIN_CHM 没有外键参照,就是一个普通的字段 alter table 在MYSQL中的后台实际操作就是和 #1楼 所说的步骤一样。不过会锁表。 如果生产环境,而且不能下线,那么一般是另加一张表,加上主键和要加的字段。如果预估还会增加,那么索性就多加点字段x1,x2,x3....作为预留 对productive 环境如果要求很高的话,对其影响最小的一种方法是1. show create table old_table; 得到 create table 语句,然后按要求修改为 create table new_table (..,,, col newColumnType,,,,)2. 使用mysqldump, 或者 select * from old_table into 'mdata.dat' 导出文件。3. 运行create table new_table .... 创建新表 (先不创建索引)4. mysql <xxx.sql 或者 load data infile .. 把刚才导出的数据导入。5. 创建索引。6. RENAME TABLE old_table TO back_table7. RENAME TABLE new_table TO old_table 2. 使用mysqldump, 或者 select * from old_table into 'mdata.dat' 导出文件。2.5 LOCK TABLES old_table (锁定原表)3. 运行create table new_table .... 创建新表 (先不创建索引) 如果生产环境,而且不能下线的话,这个方法不太合适啊,ACMAIN_CHM 这估计已经是影响最小的方法了。 肯定会有down time 用delete删除要改的数据,然后用insert into插入一行要修改成的数据! Sorry,我承认我看错了,是修改,我看成新增了。 呵呵,没事,谢谢,shine333的捧场! mysql_gui_tools中输入中文乱码 mysql 倒入乱码的问题,急 一条简单的mysql 插入判断 寻求帮助 遇到一个多表查询匹配并写入其中一个表的问题。 请再帮我看一下 mysql 关联查询语句问题 asp操作mysql出现中文乱码,走过路过不要错过,帮忙看一下 mysql如何打包进应用程序 新人问一下MyEclipse连接MySQL的问题。 奇怪的mysql的死锁问题 如何排序这样的字段? 求MYSQL好书籍~
不如根据原来的表结构以及你要改的字段类型创建一个新的表:
原表为t, 新表为t2
1. create table t2(col1,....colN)其中包括你修正以后的某字段
2. insert into t2 select * from t
3. 将原表重命名备份:
rename t to t_orig;
4. 将新表重命名为原表
rename t2 to t;
TO ACMAIN_CHM 没有外键参照,就是一个普通的字段
2. 使用mysqldump, 或者 select * from old_table into 'mdata.dat' 导出文件。
3. 运行create table new_table .... 创建新表 (先不创建索引)
4. mysql <xxx.sql 或者 load data infile .. 把刚才导出的数据导入。
5. 创建索引。
6. RENAME TABLE old_table TO back_table
7. RENAME TABLE new_table TO old_table
2.5 LOCK TABLES old_table (锁定原表)
3. 运行create table new_table .... 创建新表 (先不创建索引)
如果生产环境,而且不能下线的话,这个方法不太合适啊,ACMAIN_CHM
呵呵,没事,谢谢,shine333的捧场!