2011-05-12 43 views
0

我试图从一个CSV文件加载数据到MySQL数据库,并注意到当我导入文件时,大量的记录似乎被跳过。加载数据INFILE跳过记录

这些数据来自政府的资料来源,在单独的地方用单引号等格式很奇怪。这里是没有得到插入记录的一个样本:

"'050441'","STANFORD HOSPITAL","CA","H_HSP_RATING_7_8","How do patients rate the hospital overall?","Patients who gave a rating of'7' or '8' (medium)","22","300 or more","37","" 

这个纪录,但是,并得到插入:

"'050441'","STANFORD HOSPITAL","CA","H_HSP_RATING_0_6","How do patients rate the hospital overall?","Patients who gave a rating of '6' or lower (low)","8","300 or more","37","" 

我使用加载数据的SQL是在这里:

mysql> load data infile "c:\\HQI_HOSP_HCAHPS_MSR.csv" into table hospital_qualit 
y_scores fields terminated by "," enclosed by '"' lines terminated by "\n" IGNOR 
E 1 LINES; 

任何人有任何想法,为什么发生这种情况?看来只有这些记录实际上是正确插入的。

+0

任何人有任何建议吗? – MarathonStudios 2011-05-12 07:52:42

+0

您能否给我们定义您的表格结构? – arnep 2011-05-12 07:57:11

+0

是否找出插入的n个失败的记录/ – 2012-04-19 05:29:46

回答

3

执行查询失败的记录后,在这里提到。

mysql> load data ....; 

执行FOLL代码

mysql> show warnings; 

它会显示为什么查询得到了失败的错误?并继续下一步解决它。

我做了一个小测试与乌尔数据,工作得很好:

CREATE TABLE `test2` (
    `id` int(11) NOT NULL, 
    `no` varchar(20) NOT NULL, 
    `name` varchar(20) NOT NULL, 
    `country` varchar(20) NOT NULL, 
    `rating` varchar(20) NOT NULL, 
    `rate_desc1` varchar(100) NOT NULL, 
    `rate_desc2` varchar(100) NOT NULL, 
    `no1` int(11) NOT NULL, 
    `desc3` varchar(20) NOT NULL, 
    `no2` int(11) NOT NULL, 
    `desc4` varchar(20) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 

/var/lib/mysql/test/test.csv contianing n个工作非工作记录的两种:

1 ,“050441”,“斯坦福医院”,“CA”,“H_HSP_RATING_7_8”,“患者如何评价整个医院?”,“评分为'7'或​​'8'(中等) “22”,“300或更多”,“37”,“” 2,“050441”,“斯坦福医院”,“CA”,“H_HSP_RATING_0_6”,“患者如何评价整个医院?”,给出“6”或更低(低)“,”8“,”300或更多“,”37“,”“

mysql> load data infile "test.csv" into table test2 fields terminated by "," enclosed by '"' lines terminated by "\n" IGNORE 1 LINES; 

结果: 查询行,2行受到影响(0.05秒)
记录:2删除:0跳过:0警告:0

结论:所以,我想区别只在于列的数据类型n看到警告生成