Làm thế nào để một danh sách cảnh báo từ tiện ích 'mysqlimport'?


28

Để bắt đầu, đây không phải là về việc tải dữ liệu từ bên trong MySQL, mà là sử dụng công cụ dòng lệnh "mysqlimport".

Tôi đang sử dụng nó để tải CSV trực tiếp vào bảng và cần xem các cảnh báo mà nó đã tạo. Tôi dường như không thể nhận được cảnh báo để hiển thị với verbose cũng như không gỡ lỗi được bật. Có ý kiến ​​gì không?

(MySQL 5.0.5)

Câu trả lời:


31

Điều này là không thể với mysqlimport, tuy nhiên, như một cách thay thế, bạn có thể làm như sau:

mysql --execute="LOAD DATA LOCAL INFILE '$WORKDIR/$table.csv' INTO TABLE $table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' IGNORE 1 LINES (listOfColumnNames); SHOW WARNINGS"

Thay thế listOfColumnNamesbằng một danh sách các cột thích hợp.

Điều kỳ diệu là (như Eduard đã đề cập trước đây) là thực hiện các lệnh LOAD DATA INFILE và SHOW WARNINGS cùng nhau trong cùng một phiên, vì mysqlimport không cung cấp cách nào để nhận trực tiếp các cảnh báo.


Ngọt ngào, cảm ơn bạn! Tôi mới bắt đầu viết một tuyên bố như thế này sau khi thấy bình luận của Eduard. Cảm ơn bạn Cảm ơn
bờ vực

Điều này có hoạt động nếu tables.csvlà một tệp cục bộ (tức là không phải trên máy chủ của cơ sở dữ liệu)?
Raffi Khatchadourian

các công trình sau đây đối với tôi tạo bàn đầu tiên sau đó làm mysql -u root --execute="LOAD DATA LOCAL INFILE 'c:\\crp\\blah3.csv' INTO TABLE blah3 FIELDS TERMINATED BY ','; SHOW WARNINGS" whateverdbnameegcsv_db liên quan stackoverflow.com/questions/14127529/...
barlop

và có thể thêm ví dụ về utf8 mysql> LOAD DATA LOCAL INFILE 'c:\\crp\\blah5.csv' INTO TABLE blah5 CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; SHOW WARNINGS;như stackoverflow.com/questions/4957900/ trên
barlop

một vấn đề là mã thoát luôn luôn 0vì vậy tôi đoán bạn phải phân tích đầu ra lệnh để kiểm tra xem quá trình nhập có thành công hay không khi phần trên được viết theo kịch bản (?)
pkaramol

5

Giống như những người khác nói, vấn đề thực sự là để HIỂN THỊ CẢNH BÁO hoạt động, bạn phải ở trong cùng một phiên kết nối. mysqlimport ngắt kết nối khỏi phiên ngay sau khi nhập xong, khiến cho việc ghi lại cảnh báo của nó là không thể trong phiên bản hiện tại. Âm thanh như một cơ hội để tặng một bản vá. :)


1

Tôi cũng không tìm thấy cách nào để in cảnh báo với mysqlimport. Nhưng vì mysqlimport không làm gì khác ngoài "LOAD DATA INFILE", tại sao bạn không sử dụng lệnh mysql để nhập dữ liệu theo sau là "HIỂN THỊ CẢNH BÁO"?


Cảm ơn! Loại mysqlimport khó chịu không thực sự chơi tốt: /
brink

Sử dụng "CẢNH BÁO HIỂN THỊ;" lệnh sau "LOAD".
Eduard Wirch
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.