【问题标题】:PHPMyAdmin / MySql - Add ID field and autopopulate ID numbersPHPMyAdmin / MySql - 添加 ID 字段并自动填充 ID 号
【发布时间】:2011-11-13 07:46:29
【问题描述】:

我有一个非常大的数据库表 - 将近 2000 万条记录。

记录没有唯一的 ID 号。所以,我已经插入了新字段。

现在,我想用 ID 号填充它,增加 1,从第一个 ID 号 10,000,001 开始。

仅供参考 - 我在本地计算机上使用 WAMP,我已拨出所有最大时间长达 5000 秒,并拨出 php.ini 和 mysql.ini 中的其他几个变量,以便首先进行上传(花了10多个小时!!)。

在过去或使用其他数据库时,我可能已经将数据导出到 excel 中,然后将一些文本粘贴回 phpmyadmin 以更新记录。在处理 5K 甚至 100K 记录时这很好,但对于 2000 万条记录,这似乎无法管理。

提前致谢!!

【问题讨论】:

    标签: php mysql phpmyadmin wampserver


    【解决方案1】:

    只需在 SQL 选项卡中一个接一个地运行这两个查询:

    ALTER TABLE mytable AUTO_INCREMENT=10000001;
    
    ALTER TABLE mytable ADD `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
    

    然后,MySQL 将创建 id 字段并从 10000001 开始按顺序填写。

    【讨论】:

    • 这就是我接电话时得到的 ;D
    • 感谢您的快速回复。
    • 我可以期望这个东西在 2000 万条记录下运行多长时间?我粘贴了第一行代码,它已经运行了大约 5 分钟。我可以预计这需要一个小时或更长时间来处理吗?
    • 我不能告诉你。但这会比导出/导入快得多。
    【解决方案2】:

    这在 SQL Server 中有效,也许你可以适应 MySQL:

    declare @value int 
    set @value=10000000
    
    update your_table
    set @value+=1,id=@value
    

    它将更新您从 10000001 开始的所有 ID 行,增加 1。

    我希望至少能给你一些想法。

    【讨论】:

      【解决方案3】:

      您需要做的就是将列设置为 AUTO_INCREMENT,mysql 将为您编号行。假设您希望将新列命名为“id”。

      alter table yourtable auto_increment = 10000001;
      alter table yourtable add id int unsigned primary key auto_increment;
      

      您可以在 phpMyAdmin 的 sql 面板中发出这些命令 -- 只需去掉末尾的分号。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-19
        • 1970-01-01
        相关资源
        最近更新 更多