我正在尝试将CSV文件中的数据加载到MySQL数据库中,并注意到导入文件时似乎跳过了大量记录。
这些数据来自政府来源,并且在不寻常的地方使用单引号等格式非常奇怪。以下是未插入记录的示例:
"'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;
我正在加载数据的表的格式如下:
delimiter $$
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$$
任何人都有任何想法为什么会这样?似乎只有正确插入的记录。
答案 0 :(得分:3)
您的主键是否阻止插入其他数据?
查找已使用ProviderNumber为“'050441'”和MeasureCode为“H_HSP_RATING_7_8”插入的记录,如果您有其中一个,那么这是一个重复的密钥问题。
您可能需要在主键上添加“AnswerDescription”才能解决此问题。
此致
戴夫
答案 1 :(得分:0)
实际上我在想也许你的问题更多地与第一个双引号值有关(即它被引用两次,如“'value'”),这可能导致你试图插入的值是'050441',不应该是050441。
无论如何,如果没有特殊处理,你将会插入额外的单引号,我想你可能并不想这样做。
祝您好运,并且您的所有代码都可以完美运行!
罗德尼