更改大型表中的mysql字段名

更改大型表中的mysql字段名,mysql,alter,Mysql,Alter,我有一个有2100万行的表。我必须更改其中一行的名称。当我尝试查询“alter table company change id new_id int(11)”时;查询永远不会结束 有没有一种简单的方法来更改大mysql表的字段名 您认为: 导出所有数据并截断表 更改表格 更改导出文件中行的名称 导入文件 这只是一个快速的想法,但不会很快(导出/导入) 或者在夜间几个小时的维护中试着做些改变?:) 首先,在备份表之前: mysqldump -uroot -p db big_table > /

我有一个有2100万行的表。我必须更改其中一行的名称。当我尝试查询“alter table company change id new_id int(11)”时;查询永远不会结束


有没有一种简单的方法来更改大mysql表的字段名

您认为:

  • 导出所有数据并截断表
  • 更改表格
  • 更改导出文件中行的名称
  • 导入文件
  • 这只是一个快速的想法,但不会很快(导出/导入)


    或者在夜间几个小时的维护中试着做些改变?:)

    首先,在备份表之前:

    mysqldump -uroot -p db big_table > /tmp/big_table.backup.sql
    
    执行ALTER命令时要记住的一件事是,绝对要确保ALTER的列详细信息与您不希望更改的列详细信息相同

    例如:

    ALTER TABLE big_table MODIFY COLUMN id INT(11)
    
    将跳过任何其他内容,如
    自动增量
    非空
    。所以最好也将其包含在alter语句中

    ALTER TABLE big_table MODIFY COLUMN id INT(11) NOT NULL AUTO_INCREMENT;
    

    基本上只需复制ID列的create语句区域,替换所需内容并将其包含到modify语句中即可。

    您只需执行以下操作:

    ALTER TABLE big_table MODIFY COLUMN id INT(11) NOT NULL AUTO_INCREMENT;
    
    MyISAM表 InnoDB表 完成后,
    big_table_bak
    是您的备份

    如果您对新的
    big_表
    感到满意,则可以运行

    DROP TABLE big_table_bak;
    
    DROP TABLE big_table;
    ALTER TABLE big_table_bak RENAME big_table;
    
    如果要恢复,可以运行

    DROP TABLE big_table_bak;
    
    DROP TABLE big_table;
    ALTER TABLE big_table_bak RENAME big_table;
    

    试试看

    在一个巨大的Mysql表中更改一个字段的名称,最省时的方法是:

    创建新表格\u大表格\u表格
    从大表格中选择id作为新的表格id、字段1、字段2、字段3。

    使用pt online schema change进行长期运行的表格更改,而不将自己锁定在表格之外

    完成更改通常需要更长的时间,但您仍然可以在表执行工作时读取和写入表

    您还可以收听作者的网络研讨会,讨论其工作原理和一些注意事项:


    您在PHPMyAdmin中尝试过吗?这可能会使用我在PHPMyAdmin和commandline中尝试过的更有效的方法。然后重新导入数据。该列是否定义为int(11)且没有其他属性?如果只是更改名称,MySQL应该只更新元数据而不触及行。您使用的是什么存储引擎?文档中说,重命名列(InnoDB存储引擎除外)只会修改表元数据,而不会立即修改表数据,方法是更改表的.frm文件,而不接触表内容。但是我的情况不是这样。另外,如果alter由于某种原因出错,那么您可以搜索并替换
    id INT(11)
    CREATE TABLE
    字段,位于
    big_TABLE.backup.sql
    备份文件中的
    CREATE TABLE
    语句中,以匹配所需内容,然后使用
    mysql-uroot-p db
    正常导入。谢谢。我正在尝试。我将发布结果。我已经尝试了建议。是的,它工作正常。我已经使用了拆分和cat以编辑大sql文件。太好了。也许可以添加您为使其完全工作而必须进行的更改和步骤,然后让我们结束这个问题:)如果您有2100万行,这并不是那么简单……是的,我有7700万条记录。这可能需要太长时间,我想,会评论晚了需要多长时间