2011-05-19 59 views
3

我试图从CSV文件加载数据到MySQL数据库,并注意到大量的记录似乎在我导入文件时被跳过。加载数据INFILE不会导入CSV数据源中的所有行

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

"'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; 

我正在加载数据的表格格式如下:

定界符$$

CREATE TABLE `hospital_quality_scores` (
    `ProviderNumber` varchar(8) NOT NULL, 
    `HospitalName` varchar(50) DEFAULT NULL, 
    `State` varchar(2) DEFAULT NULL, 
    `MeasureCode` varchar(25) NOT NULL, 
    `Question` longtext, 
    `AnswerDescription` longtext, 
    `AnswerPercent` int(11) DEFAULT NULL, 
    `NumberofCompletedSurveys` varchar(50) DEFAULT NULL, 
    `SurveyResponseRatePercent` varchar(50) DEFAULT NULL, 
    `Footnote` longtext, 
    PRIMARY KEY (`ProviderNumber`,`MeasureCode`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$ 

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

回答

3

它可能是您的主键是防止插入额外的数据?

查找已经插入ProviderNumber为''050441'“和MeasureCode为”H_HSP_RATING_7_8“的记录,如果您有其中一个,那么这是一个重复的关键问题。

您可能需要将“AnswerDescription”添加到主键以解决此问题。

问候,

戴夫

0

其实我在想,也许你的问题更多的是与第一个值被双引号(即它被引用两次在“‘价值’”),其中可能导致您尝试插入的值为'050441',而不是050441。

无论如何,如果没有特殊处理,您将会插入额外的单引号,我认为您可能并不想这么做。

祝您好运,您的代码可以完美无瑕地运行!

Rodney