2011-12-15 35 views
5

Tôi đang tải dữ liệu từ tập tin văn bản để bảng mysql sử dụng truy vấn sau đây:dòng lỗi Skip trong khi tải dữ liệu vào bảng mysql từ tập tin phân

LOAD DATA INFILE "myFile.csv" 
INTO TABLE some_table 
COLUMNS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '\\' 
LINES TERMINATED BY '\n' (admin,consumer); 

Nhưng khi tập tin của tôi chứa một số dòng lỗi nó không phải là có thể bỏ qua mà dòng và toàn bộ quá trình dừng lại ở nơi đó. Ý tôi là nếu định dạng tệp của tôi là:

 
---------- 
sankr : kumar 
---------- 
ramesh:rao 
---------- 
new users add here 
---------- 
sri : vennla 
---------- 
anu : bhavya 
---------- 

Tôi phải tải bằng cách bỏ qua dòng "người dùng mới thêm tại đây". Làm thế nào có thể làm điều này?

Trả lời

-2

Không thể bỏ qua các dòng bên trong dữ liệu bằng cách sử dụng LOAD DATA INFILE.

Chỉ cần xóa bản ghi sau bằng một truy vấn riêng biệt.

DELETE FROM table WHERE column = "new users add here"; 
+0

Tệp của tôi chứa dòng lỗi nên truy vấn của tôi sẽ phát sinh lỗi khi tải và sẽ không tải bất kỳ thứ gì vào cơ sở dữ liệu. Việc dừng thực hiện của nó. Bất kỳ cách nào khác để đạt được điều này? – sankar

+0

@ sankar bạn đang gặp phải lỗi gì? –

+0

"LRI 1261 (01000): Hàng 73 không chứa dữ liệu cho tất cả các cột". Nó không tải ngay cả dòng duy nhất vào cơ sở dữ liệu. – sankar

2

Từ khóa bạn đang tìm kiếm là IGNORE.

Như trong:

LOAD DATA INFILE "myFile.csv" IGNORE 
INTO TABLE some_table 
COLUMNS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '\\' 
LINES TERMINATED BY '\n' (admin,consumer); 
+2

Bạn có chắc chắn không? Từ tài liệu mysql http://dev.mysql.com/doc/refman/5.5/en/load-data.html 'IGNORE' có nghĩa là bỏ qua các dòng có khóa chính trùng lặp với hàng tồn tại. – hellojinjie

+0

Hm. Tôi thấy điều đó, nhưng nó làm việc cho tôi. Tôi không thể nhớ nơi tôi có được từ đó. Tôi có thể kiểm tra sau để xem liệu nó có bỏ qua tất cả các lỗi hay chỉ là các lỗi khóa trùng lặp. – Dylan

+0

Nó không hoạt động, đó không phải là giải pháp –

1

tôi thấy rằng LOAD DATA LOCAL INFILE 'filename' REPLACE sẽ từ chức sau khi một lỗi định dạng dữ liệu (ngày bất hợp pháp), nhưng LOAD DATA LOCAL INFILE 'filename' và LOAD DATA LOCAL INFILE 'tên tập tin' IGNORE tiếp tục.

Điều này trái với tài liệu MySql (ver 5.0) theo như tôi có thể biết.

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