Mysql #1062-钥匙和#x27的重复输入;初级';加载数据填充

Mysql #1062-钥匙和#x27的重复输入;初级';加载数据填充,mysql,sql,csv,str-to-date,Mysql,Sql,Csv,Str To Date,我已经搜索了所有地方,但似乎无法找到答案,所以这里是我的第一个堆栈交换问题 我使用java程序来运行批量加载过程,但我也直接从我的sql客户机MySQL Workbench中尝试过,我得到了相同的错误: LOAD DATA INFILE '/path/to/file/infile.csv' INTO TABLE t1 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (category, item, date_time, v1, v2, v3

我已经搜索了所有地方,但似乎无法找到答案,所以这里是我的第一个堆栈交换问题

我使用java程序来运行批量加载过程,但我也直接从我的sql客户机MySQL Workbench中尝试过,我得到了相同的错误:

LOAD DATA INFILE '/path/to/file/infile.csv' 
INTO TABLE t1
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'
(category, item, date_time, v1, v2, v3);
错误:

Error Code: 1062. Duplicate entry ''Book'-'Fiction'-2014-04-16 09:33:00' for key 'PRIMARY'
使用我的sql客户机,我已经确认表中没有这样的当前记录,事实上,我在同一个月没有相同类别类型对的任何记录。我每个月都有很多(~16000)个CSV文件要加载到我的MySQL数据库中,每个文件对应于一个单独的类别类型对,在一个月的过程中具有不同的值。到目前为止,我已经成功地使用这种方法加载了超过5000万条记录,但是如果没有同样的错误,我似乎无法加载更多的记录

我的表使用3个字段创建主键,2个varchar()和一个datetime

'CREATE TABLE `t1` (
  `category` varchar(10) NOT NULL,
  `item` varchar(15) NOT NULL DEFAULT '''',
  `date_time` datetime NOT NULL,
  `v1` double DEFAULT NULL,
  `v2` double DEFAULT NULL,
  `v3` double DEFAULT NULL,
  PRIMARY KEY (`category`,`type`,`date_time`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1'
  • 我过去曾与数据库打过交道,但距离这么远 记录,我不知道这是否是问题所在

  • 我可以切换到使用自动递增的id作为主键, 但考虑到大量的记录,它可能会占用更多的空间 我可能会得到我的(类别、项目、日期和时间)的副本 这将是个问题

  • 我知道MySQL允许对指定为 字符串,我可能需要对图进行一些额外的格式化 这件事已经解决了

  • 我删除了csv文件中第一行的值 “书”-“小说”-2014-04-16 09:33:00,但我得到同样的1062 下一个日期时间值“账面”-“虚构”错误-2014-04-16 09:35:00'

  • 我想这可能是我格式化日期时间字符串的方式 但我使用的是“YYYY-MM-DD HH:MM:SS”格式,它已经起作用了 在数千个其他加载数据上填充。为了安全起见,我试过了 使用STR_TO_DATE()函数,请参见下文

    加载数据infle'/path/to/file/infle.csv' 进入表t1 以“,”结尾的字段 以“\n”结尾的行 (类别,项目,@date_var,v1,v2,v3) 将date_time=STR_设置为日期(@date_var,%Y-%m-%d%H:%i:%s)


任何帮助都将不胜感激。

错误似乎非常清楚:文件中有多行具有相同的
类别、类型、日期和时间
。再多的重新格式化也无法解决此问题,您需要对重复项采取措施,或者使用
忽略
选项跳过重复项。您输入的文件中充满了重复项。谢谢@Barmar,但是当我搜索重复项时,在表中找不到它们。如果将来我有重复项,忽略选项会有所帮助。如何在主键中有一列不在表中?表中没有
类型
列,如果该列是
?如果没有看到重复项,这里没有足够的信息来找出导致此错误的原因。侧边栏中有很多相关的问题,我建议您仔细查看,看看其中是否有有用的问题(其中一个建议是寻找创建额外行的触发器)。