使用mysqlimport导入包含主键自增长属性的表
2012-08-23 15:49
369 查看
我们经常使用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>环境下插入数据
我们可以看到除了初始化的第一条可以使用0,其次只能使用null来创建下一个序列号(你也可以手动赋予未生成的数值),其他均报错,那么在使用mysqlimport导入的时候是否也是这样,我们来看下面的测试。
清除表
文本文件1
文本文件2
文本文件3
导入都失败,同一个错误:1062主键重复
我们初始化下t3表,填充id为0的记录,再导入文本文件2
导入失败,报错同上。
结论:在SQL_MODE默认的情况下mysql命令环境下都是可以插入数据的,mysqlimport的工作也比较满意;当修改SQL_MODE后,mysqlimport的工作就不能完全支持了。那么在批量导数据之前,我们最好先检查下SQL_MODE的设置,避免走不必要的弯路。
本文出自 “喀秋莎的技术积累” 博客,请务必保留此出处http://mckobe23.blog.51cto.com/826570/971185
我的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>环境下插入数据
我们可以看到除了初始化的第一条可以使用0,其次只能使用null来创建下一个序列号(你也可以手动赋予未生成的数值),其他均报错,那么在使用mysqlimport导入的时候是否也是这样,我们来看下面的测试。
清除表
文本文件1
文本文件2
文本文件3
导入都失败,同一个错误:1062主键重复
我们初始化下t3表,填充id为0的记录,再导入文本文件2
导入失败,报错同上。
结论:在SQL_MODE默认的情况下mysql命令环境下都是可以插入数据的,mysqlimport的工作也比较满意;当修改SQL_MODE后,mysqlimport的工作就不能完全支持了。那么在批量导数据之前,我们最好先检查下SQL_MODE的设置,避免走不必要的弯路。
本文出自 “喀秋莎的技术积累” 博客,请务必保留此出处http://mckobe23.blog.51cto.com/826570/971185
相关文章推荐
- MySQL使用mysqlimport命令导入文本文件
- 使用activerecord-import 批量导入数据至mysql on rails enhanced active-record
- Data Import 2007 for MySql,MySql Data Wizard 导入XML到MySql使用经验
- 使用mysqlimport 将格式化文件导入mysql表
- 使用pl/sql的文本导入器时如何设置主键自增长
- MySQL使用mysqldump命令导入数据库时包含存储过程
- mysql复合主键如何设定自增长属性
- 【DB2】DB2使用IMPORT命令导入含有自增长列的表报错处理
- mysqlimport导入命令使用
- 使用mysqlimport导入数据
- mysqlimport工具的使用帮助文档(mysql导入csv数据,mysql备份数据恢复)
- 从别的数据库导入数据时主键和自增长字段属性丢失问题
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
- MySQL 学习教程(四)【整理】-列属性(空属性、列描述和默认值/ 主键/ 自动增长/ 唯一键)
- 使用DTD文档对 xml 1 作业中的xml文档进行约束,其中河北省只能依次包含石家庄市、张家口市、保定市这三个市,保定市可以有多个或者1个,给保定市定义属性编号为ID类型,必须有;属性name为字符
- Navicat for MySQL使用手记(中)--导入/导出数据表
- Solr-5.3.1 dataimport 导入mysql数据
- SQL Server设置主键自增长列(使用sql语句实现)
- 使用MySQLMigrationToolkit快速将Oracle数据导入MySQL
- 使用sqoop 1.4.4从mysql向hdfs导入表出现链接数据库失败错误的解决办法