用navicat建表设定主键的唯一性以后,导入数据出现了问题。
实测中发现,录入模式选择的是添加,当源数据主键一列有重复值的时候重复值会报错不被录入,但是同时部分没有重复的数据同样也会遗漏。比如500条数据,其中200个是重复值,正常情况下应该录入300条数据,实测过程中正常录入的不到300条。
其实这个问题录入模式选择添加或更新似乎是可以解决的,但是极大的拖累了录入速度,特别是数据累积较多的时候,请问此问题产生的原因以及解决方式?
实测中发现,录入模式选择的是添加,当源数据主键一列有重复值的时候重复值会报错不被录入,但是同时部分没有重复的数据同样也会遗漏。比如500条数据,其中200个是重复值,正常情况下应该录入300条数据,实测过程中正常录入的不到300条。
其实这个问题录入模式选择添加或更新似乎是可以解决的,但是极大的拖累了录入速度,特别是数据累积较多的时候,请问此问题产生的原因以及解决方式?
解决方案 »
- MYSQL的一个库被覆盖了.有什么办法恢复?
- 用Mysql LOAD DATA导入数据时,是否要求源文本字段数量和表中列字段的一样多?
- 如何把表里的数据分到多个表中去.
- 【30分】问个小小滴问题
- 如何在MYSQL中用C语言实现事务处理
- ODBC与MYSQL数据库连接速度慢的原因?
- 在windows 下如何用ODBC 连接Linux下的MYSQL?(急急)
- 关于sql的远程连接?
- MySQL中类型隐身转换求解!!视图中的union
- Unable to convert MySQL date/time value to System.DateTime
- 求助,关于导入csv文件的error 1290, secure file priv的问题
- 如何创建一个存储过程 查找一列数中长度大于3的连续递增序列
添加一个过渡表 tmp, 导入数据到 tmp 表, 再将 tmp 表中的数据按条件插入到 目标表 即可:
类似:
INSERT INTO targetTable(c1,c2)
SELECT c1,c2 FROM tmp AS a
WHERE NOT EXISTS(
SELECT * FROM targetTable AS b WHERE a.c1=b.c1 AND a.c2=b.c2
);
navicat 只是一个第三方的工具, 不需要在上面结结。