加入收藏 | 设为首页 | 会员中心 | 我要投稿 52站长网 (https://www.52zhanzhang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql自增长表如何load_使用mysqlimport导入包含主键自增长属性

发布时间:2023-01-11 13:35:13 所属栏目:MySql教程 来源:互联网
导读: 我们经常使用LOAD DATA的方式批量向数据库灌数据,如果在mysql外又想使用脚本的话,我们可以借助mysqlimport,具体使用方法网上有很多这里不再赘述。下面我们来看一个带自增长字段属性的表

我们经常使用LOAD DATA的方式批量向数据库灌数据,如果在mysql外又想使用脚本的话,我们可以借助mysqlimport,具体使用方法网上有很多这里不再赘述。下面我们来看一个带自增长字段属性的表,是如何使用mysqlimport导入的。

我的MySQL-PerconaServer

660042ced3e7095c90ab25d03d7859b3.png

表结构

e595ee696edbc6b74b047d9c6a165317.png

SQL_MODE

6f29bf35b5ca24bb4df814034a4a090f.png

表最初数据

6bbd6bc2f67bc112cd7baa9e3dba01b7.png

注意:在该SQL_MODE下,指定自增长列为0的作用是生成下一序列号,而并非赋值操作。

文本文件1

文本文件2

文本文件3

注意:

1.我们在INSERT的时候处理首字段的方式是VALUES('','aaa',3);

2.文件文件中的字段也同样要求一一对应,首字段可不填充内容保持在分隔符前第一位,或者将null填充进去(虽然我们的主键约束的是NOT NULL,在这里也是支持的),文本内容使用以上两种方式均可导入。

导入成功

导入结果

c9907cfc8e30b6630b7e7304bad453d3.png

1为INSERT语句插入,2~4为文本文件1的导入,5~7为文本文件2的导入,8~10为文本文件3的导入

------------------------------------------------------------------------------------------

补充:在SQL_MODE为空时,以上导入没问题任何问题,但是当我们使用了严格模式,就需要特别注意。

SQL_MODE

6bc678d6f16839952b5e4425c3db3bda.png

官方手册:由于NO_AUTO_VALUE_ON_ZERO影响AUTO_INCREMENT列的处理。一般情况,你可以向该列插入NULL或0生成下一个序列号。NO_AUTO_VALUE_ON_ZERO禁用0,因此只有NULL可以生成下一个序列号。

初始化数据

d89383b82cd60a876304e8be008449e4.png

mysql>环境下插入数据

c9a1996eaa68bc884f0ac336760b8bb1.png

我们可以看到除了初始化的第一条可以使用0MySQL 序列使用,其次只能使用null来创建下一个序列号(你也可以手动赋予未生成的数值),其他均报错,那么在使用mysqlimport导入的时候是否也是这样,我们来看下面的测试。

清除表

文本文件1

文本文件2

文本文件3

导入都失败,同一个错误:1062主键重复

我们初始化下t3表,填充id为0的记录,再导入文本文件2

24180091ea9d959bea3c4fd3ff80139d.png

导入失败,报错同上。

结论:在SQL_MODE默认的情况下mysql命令环境下都是可以插入数据的,mysqlimport的工作也比较满意;当修改SQL_MODE后,mysqlimport的工作就不能完全支持了。那么在批量导数据之前,我们最好先检查下SQL_MODE的设置,避免走不必要的弯路。

(编辑:52站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!