mysql自增长表如何load_使用mysqlimport导入包含主键自增长属性
我们经常使用LOAD DATA的方式批量向数据库灌数据,如果在mysql外又想使用脚本的话,我们可以借助mysqlimport,具体使用方法网上有很多这里不再赘述。下面我们来看一个带自增长字段属性的表,是如何使用mysqlimport导入的。 我的MySQL-PerconaServer 表结构 SQL_MODE 表最初数据 注意:在该SQL_MODE下,指定自增长列为0的作用是生成下一序列号,而并非赋值操作。 文本文件1 文本文件2 文本文件3 注意: 1.我们在INSERT的时候处理首字段的方式是VALUES('','aaa',3); 2.文件文件中的字段也同样要求一一对应,首字段可不填充内容保持在分隔符前第一位,或者将null填充进去(虽然我们的主键约束的是NOT NULL,在这里也是支持的),文本内容使用以上两种方式均可导入。 导入成功 导入结果 1为INSERT语句插入,2~4为文本文件1的导入,5~7为文本文件2的导入,8~10为文本文件3的导入 ------------------------------------------------------------------------------------------ 补充:在SQL_MODE为空时,以上导入没问题任何问题,但是当我们使用了严格模式,就需要特别注意。 SQL_MODE 官方手册:由于NO_AUTO_VALUE_ON_ZERO影响AUTO_INCREMENT列的处理。一般情况,你可以向该列插入NULL或0生成下一个序列号。NO_AUTO_VALUE_ON_ZERO禁用0,因此只有NULL可以生成下一个序列号。 初始化数据 mysql>环境下插入数据 我们可以看到除了初始化的第一条可以使用0MySQL 序列使用,其次只能使用null来创建下一个序列号(你也可以手动赋予未生成的数值),其他均报错,那么在使用mysqlimport导入的时候是否也是这样,我们来看下面的测试。 清除表 文本文件1 文本文件2 文本文件3 导入都失败,同一个错误:1062主键重复 我们初始化下t3表,填充id为0的记录,再导入文本文件2 导入失败,报错同上。 结论:在SQL_MODE默认的情况下mysql命令环境下都是可以插入数据的,mysqlimport的工作也比较满意;当修改SQL_MODE后,mysqlimport的工作就不能完全支持了。那么在批量导数据之前,我们最好先检查下SQL_MODE的设置,避免走不必要的弯路。 (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |