Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

mysql + nhập tệp có khoảng trắng trong tiêu đề cột + cách xử lý

Câu lệnh MySQL LOAD DATA tải các giá trị từ tệp theo vị trí , không phải bằng tên.

MySQL không có bất kỳ yêu cầu nào về "tên" của các trường (từ dòng tiêu đề trong tệp .csv) "khớp" với bất kỳ tên cột nào. (Có thể một số thành phần khác trong hệ thống của bạn có loại yêu cầu đó, nhưng MySQL LOAD DATA thì không.)

Tệp .csv không có dòng tiêu đề là hợp lệ. Khi có dòng tiêu đề, chúng tôi thường "bỏ qua" dòng tiêu đề đó bằng cách sử dụng IGNORE 1 LINES .

Ngoài ra, tôi thích sử dụng từ khóa FIELDS trong câu lệnh TẢI DỮ LIỆU thay cho COLUMNS .

Trong MySQL, các số nhận dạng (tên cột, tên bảng) có thể được thoát ra bằng cách sử dụng các ký tự backtick. Để sử dụng số nhận dạng bao gồm các ký tự không hợp lệ, chẳng hạn như dấu cách, mã định danh phải được thoát ra.

CREATE TABLE ... 
... 
`Rec Open Date` DATE NOT NULL COMMENT 'Rec Open Date',
^             ^

Trên bàn phím của tôi, phím backtick là phím ở phía trên bên trái `~ ngay bên trái của 1! phím.

ANSI_QUOTES

Nếu sql_mode biến bao gồm ANSI_QUOTES , sau đó bạn cũng có thể sử dụng dấu ngoặc kép để thoát khỏi số nhận dạng. ví dụ:

SHOW VARIABLES LIKE 'sql_mode' ;

SET sql_mode = 'ANSI_QUOTES,...' ;

SHOW VARIABLES LIKE 'sql_mode'

Variable_name  Value        
-------------  -----------
sql_mode       ANSI_QUOTES  

Sau đó:

CREATE TABLE ... 
... 
"Rec Open Date" DATE NOT NULL COMMENT 'Rec Open Date',
^             ^

Nếu sql_mode không bao gồm ANSI_QUOTES (hoặc rõ ràng hoặc được bao gồm trong một số cài đặt khác), thì dấu ngoặc kép xung quanh số nhận dạng không hoạt động. Và việc sử dụng các dấu ngoặc kép xung quanh các số nhận dạng sẽ không bao giờ hiệu quả ... các dấu ngoặc kép bao gồm các ký tự chuỗi.

Cách rút ra:sử dụng các ký tự backtick để thoát khỏi các số nhận dạng (tên cột, tên bảng, v.v.) và sử dụng các dấu ngoặc kép xung quanh các ký tự của chuỗi. Tránh sử dụng dấu ngoặc kép xung quanh các ký tự chuỗi để làm cho mã SQL của bạn hoạt động ngay cả khi ANSI_QUOTES được đặt.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi MySQL 2006:Máy chủ mysql đã biến mất

  2. Cách kết nối với MySQL bằng Python

  3. cấu trúc mysql cho nhận xét và trả lời nhận xét

  4. MySQLDumper:Một công cụ sao lưu cơ sở dữ liệu MySQL dựa trên PHP và Perl

  5. Bảng MySQL chỉ có varchar làm khóa ngoại