CSV导入没有错误但缺少行

时间:2016-03-16 21:18:52

标签: mysql

我正在将csv文件加载到表中,成功且没有错误。当比较原始行的数量(从外部应用程序中查看.csv和从输出响应中查看)与结果表中的行数(来自表检查器)时,似乎并非所有行都在导入。 Table Inspector报告该表有1,416,824行,而原始csv有1,419,910行。数据集中应该没有复制的主键,但如果是这种情况,我应该在这些行中出错。

表格结构:

CREATE TABLE `table1` (
  `pkfield` varchar(10) NOT NULL,
  `field1` varchar(3) DEFAULT NULL,
  `field2` varchar(1) DEFAULT NULL,
  `field3` varchar(1) DEFAULT NULL,
  PRIMARY KEY (`pkfield`),
  UNIQUE KEY `pkfield_UNIQUE` (`pkfield`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

导入命令:

LOAD DATA INFILE 'c:/table1.csv'
INTO TABLE myschema.table1
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';

MySQL Workbench响应:

1419910 row(s) affected Records: 1419910  Deleted: 0  Skipped: 0  Warnings: 0

来自csv文件的示例(数据模拟):

6623950258,XYZ,A,B
5377103432,XYZ,A,B
9131144416,XYZ,A,A
1326703267,XYZ,A,B
7847786312,XYZ,A,B
1119927042,XYZ,B,B
4144055385,CDE,A,B
4563489252,XYZ,A,B
5733611912,XYZ,A,B
3309418377,XYZ,A,B
6928148128,XYZ,A,B
1152657670,XYZ,A,B
8143082292,CDE,A,B
9373340750,XYZ,A,A
3318949288,XYZ,A,B
1166427684,XYZ,A,B
5062296807,XYZ,B,A
4624323293,XYZ,A,B
3088992643,CDE,A,B
6477504847,XYZ,A,B

非常感谢任何建议或解释。亲切的问候。

1 个答案:

答案 0 :(得分:1)

老实说,我自己不确定为什么在重新导入表格后行数不准确。我认为表检查器从某些statistics table获取数据,据我所知,只有在表变化超过10%时才会更新。也许这就是原因。但是,总是可以使用传统的

获取准确的行数
select count(*) from myschema.table1;

正如@nbayly所说,这给出了1419910行的预期结果,与LOAD DATA报告的数字相符。