使用 phpmyadmin 导入时在 mysql 中自动增加列

Posted

技术标签:

【中文标题】使用 phpmyadmin 导入时在 mysql 中自动增加列【英文标题】:Auto increment column in mysql when importing with phpmyadmin 【发布时间】:2020-05-20 16:08:40 【问题描述】:

我在 mysql 中有一个带有以下标题的表:

staff_id,dept_id,role_id,username,firstname,lastname,passwd,backend,email,phone,phone_ext,mobile,signature,lang,timezone,locale,notes,isactive,isadmin,isvisible,onvacation,assigned_only,show_assigned_tickets,change_passwd,max_page_size,auto_refresh_rate,default_signature_type,default_paper_size,extra,permissions,created,lastlogin,passwdreset,updated

staff_id 是主键值,设置为 AUTO_INCREMENT。

我发现this post 中的 Queue 解决方案确实很有帮助,尽管在导入数据时,staff_id 列没有自动递增。我在 phpmysql 的格式特定选项中插入列名。如果我尝试导入的 csv 文件中存在 staff_id 值,我只能填充它。

所以如果数据看起来像这样:

2,1,1,agent,Mista,Busta,NULL,NULL,agent@company.org,,NULL,,,NULL,NULL,NULL,<p>this is an agent; mista busta; agent@company.org</p>,1,0,1,0,0,0,0,0,0,none,Letter,"""def_assn_role"":true","""user.create"":1,""user.delete"":1,""user.edit"":1,""user.manage"":1,""user.dir"":1,""org.create"":1,""org.delete"":1,""org.edit"":1,""faq.manage"":1",2020-02-04 10:18:42,NULL,NULL,2020-02-04 10:18:42

...注意第一个'2'是staff_id。我想做的是在 csv 中有这个:

,1,1,agent,Mista,Busta,NULL,NULL,agent@company.org,,NULL,,,NULL,NULL,NULL,<p>this is an agent; mista busta; agent@company.org</p>,1,0,1,0,0,0,0,0,0,none,Letter,"""def_assn_role"":true","""user.create"":1,""user.delete"":1,""user.edit"":1,""user.manage"":1,""user.dir"":1,""org.create"":1,""org.delete"":1,""org.edit"":1,""faq.manage"":1",2020-02-04 10:18:42,NULL,NULL,2020-02-04 10:18:42

...将 staff_id 列留空并允许 mysql 在它认为合适的时候自动填充(auto_increment)。

【问题讨论】:

不要将 staff_id 留空,这是一个必填字段 -- 而是将其完全删除(包括逗号) -- 如果适用,还要确保在实际插入语句中删除对 staff_id 的引用。 (IE 只是删除了整个列,包括标题 ..)—— MySQL 在导入期间将看不到对它的引用,并遵循“自动增量”,分配新的 ID 创建staff_id作为简单的非索引字段,按原样导入数据,然后删除staff_id并根据需要创建-auto_increment、主键等。 @Zak 就在兄弟身上!那行得通。把它放在一个答案中,我会接受它。 NULL 也将被替换为自动递增值 【参考方案1】:

AUTO INCREMENT 在 MySQL 中的服务器级别设置,如果在 CSV 或其他导入中手动分配,可以覆盖。如果您只是从导入中排除整个列,您将允许 MySQL 为该列执行设置为 default 的操作,并自动分配 ID,因为它认为您不想分配它们自己。

另外,如果您在不使用TRUNCATE TABLE 的情况下多次导入 - MySQL 将选择最后插入的 ID 并从那里继续,即使表是空的。因此,如果您想从 1 重新开始,则必须对表进行 trucate。

【讨论】:

以上是关于使用 phpmyadmin 导入时在 mysql 中自动增加列的主要内容,如果未能解决你的问题,请参考以下文章

使用 mamp、phpMyAdmin 导入 mysql 数据库

无法使用 phpmyadmin 向导将 csv 导入 mysql 数据库

使用phpMyAdmin 怎么导入数据库

MySQL/PHPMyAdmin - 使用 512MB RAM 导入 15,000 行

MySQL 使用工具 phpmyadmin 导入 SQL 文件报错

使用 phpmyadmin 导出/导入 mysql 数据库