2011-05-12 42 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看到警告生成