Инструкцията на MySQL LOAD DATA зарежда стойности от файла по позиция , а не по име.
MySQL няма никакво изискване за "имена" на полетата (от заглавния ред в .csv файла) "съвпадащи" на имена на колони. (Възможно е някой друг компонент на вашата система да има такъв тип изискване, но MySQL LOAD DATA не.)
Валидно е .csv файл да няма заглавен ред. Когато има заглавен ред, ние обикновено го "пропускаме", използвайки IGNORE 1 LINES
.
Като настрана предпочитам да използвам ключовата дума FIELDS
в оператора LOAD DATA на мястото на COLUMNS
.
В MySQL идентификаторите (имена на колони, имена на таблици) могат да бъдат екранирани с помощта на знаци за обратна отметка. За да използвате идентификатор, който включва невалидни знаци, като интервал, идентификаторът трябва да бъде екраниран.
CREATE TABLE ...
...
`Rec Open Date` DATE NOT NULL COMMENT 'Rec Open Date',
^ ^
На моята клавиатура отметката е клавишът в горния ляв ъгъл ` ~ точно вляво от 1 ! ключ.
ANSI_QUOTES
Ако sql_mode
променливата включва ANSI_QUOTES
, тогава можете също да използвате двойни кавички за избягване на идентификатори. напр.
SHOW VARIABLES LIKE 'sql_mode' ;
SET sql_mode = 'ANSI_QUOTES,...' ;
SHOW VARIABLES LIKE 'sql_mode'
Variable_name Value
------------- -----------
sql_mode ANSI_QUOTES
След това:
CREATE TABLE ...
...
"Rec Open Date" DATE NOT NULL COMMENT 'Rec Open Date',
^ ^
Ако sql_mode
не включва ANSI_QUOTES
(или изрично, или включено в някаква друга настройка), тогава двойните кавички около идентификаторите не работят. И използването на единични кавички около идентификаторите никога не трябва да работи... единичните кавички обхващат низови литерали.
Изводът:използвайте знаци с обратна отметка, за да избегнете идентификатори (имена на колони, имена на таблици и т.н.) и използвайте единични кавички около низовите литерали. Избягвайте използването на двойни кавички около низовите литерали, за да накарате вашия SQL код да работи дори когато е зададено ANSI_QUOTES.