2011-12-12 24 views
9

Tôi đang cố nhập tệp CSV vào bảng cơ sở dữ liệu MySQL. Các hàng CSV trông giống như sau:Làm thế nào để thoát khỏi dấu phẩy bên trong giá trị CSV khi nhập bảng vào MySQL?

"00602"," ","42042","15590","0","0","0","35","9","67","1978","20608","21434","3.1","54700","11384","31.3","30.4","32","18.382809","-67.186759","0","PR","Puerto Rico","U","","787","AGUADA","URB SAN CRISTOBAL","AGUADA","003","72","4","N","0060","","","10380","","Metro","Aguadilla-Isabela-San Sebastián PR","Aguadilla PR MSA","","","","N","0","0","0","0","","0","0","0","0","0","322569","0","","","5456","415","9577","V17136"," "," ","","" 
"00602"," ","42042","15590","0","0","0","35","9","67","1978","20608","21434","3.1","54700","11384","31.3","30.4","32","18.382809","-67.186759","0","PR","Puerto Rico","U","","787","AGUADA","COMUNIDAD LAS FLORES","AGUADA","003","72","4","N","0060","","","10380","","Metro","Aguadilla-Isabela-San Sebastián PR","Aguadilla PR MSA","","","","N","0","0","0","0","","0","0","0","0","0","322569","0","","","5456","415","9577","V17136"," "," ","","" 

etc... 

Như bạn có thể thấy, các trường được bao gồm trong dấu ngoặc kép và cách nhau bằng dấu phẩy. Tuy nhiên một số hàng có dấu phẩy trong các giá trị như vậy (chú ý giá trị cuối cùng):

"00501"," ","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","40.81518","-73.0455","25","NY","New York","N","","631","HOLTSVILLE","I R S SERVICE CENTER","SUFFOLK","103","36","5","Y","5602","5380","408","35620","35004","Metro","New York-Northern New Jersey-Long Island NY-NJ-PA","New York-Northern New Jersey-Long Island","Nassau-Suffolk, NY PMSA","Northeast","Middle Atlantic","N","7","0","0","0","B","0","0","0","0","0","18640775","2807500","","","0","1","1","V13916","U"," ","New York-Newark-Bridgeport, NY-NJ-CT-PA","Nassau-Suffolk, NY" 

Đây là cách tuyên bố nhập khẩu của tôi trông giống như:

LOAD DATA INFILE '/file.csv' 
REPLACE INTO TABLE zipcodes 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n'; 

Nhưng nó không làm việc như mong đợi. Ví dụ, dòng đầu tiên chèn có một cột với các giá trị sau:

Nassau-Suffolk, NY""00501 

thay vào đó nó cần phải có được:

Nassau-Suffolk, NY 

00501 nên đã được đưa vào như giá trị cột đầu tiên trên hàng tiếp theo .

Làm cách nào để điều chỉnh SQL của tôi hoạt động đúng?

Trả lời

16

Từ MySQL Reference Manual, sử dụng các tùy chọn sau thay vì:

LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name 
    FIELDS TERMINATED BY ',' ENCLOSED BY '"' 
    LINES TERMINATED BY '\r\n' 

Cập nhật để phù hợp với việc sử dụng của bạn, nhưng phần quan trọng là phải thả các OPTIONALLY từ OPTIONALLY ENCLOSED BY.

+0

cảm ơn, hoạt động hoàn hảo. – TKpop

+0

Làm thế nào để chúng ta đạt được điều này trong một thủ tục được lưu trữ, vì 'LOAD DATA' không được phép trong SPs? – Sawant

Các vấn đề liên quan