2011-05-19 32 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