sql >> Databáze >  >> RDS >> Mysql

mysql + import souboru s mezerami v záhlaví sloupců + jak zacházet

Příkaz MySQL LOAD DATA načte hodnoty ze souboru podle pozice , ne jménem.

MySQL nemá žádné požadavky na "názvy" polí (z řádku záhlaví v souboru .csv) "odpovídající" jakýmkoli názvům sloupců. (Je možné, že některá jiná součást vašeho systému má tento typ požadavku, ale MySQL LOAD DATA nikoli.)

Pro soubor .csv platí, že nemá řádek záhlaví. Pokud existuje řádek záhlaví, obvykle jej „přeskočíme“ pomocí IGNORE 1 LINES .

Kromě toho raději používám klíčové slovo FIELDS v příkazu LOAD DATA namísto COLUMNS .

V MySQL mohou být identifikátory (názvy sloupců, názvy tabulek) escapovány pomocí znaků backtick. Chcete-li použít identifikátor, který obsahuje neplatné znaky, jako je mezera, musí být identifikátor uvozen.

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

Na mé klávesnici je backtick klávesa vlevo nahoře ` ~ hned nalevo od 1 ! klíč.

ANSI_QUOTES

Pokud sql_mode proměnná obsahuje ANSI_QUOTES , pak můžete také použít dvojité uvozovky pro únikové identifikátory. např.

SHOW VARIABLES LIKE 'sql_mode' ;

SET sql_mode = 'ANSI_QUOTES,...' ;

SHOW VARIABLES LIKE 'sql_mode'

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

Potom:

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

Pokud sql_mode není zahrnovat ANSI_QUOTES (buď explicitně nebo zahrnuto v nějakém jiném nastavení), pak dvojité uvozovky kolem identifikátorů nefungují. A používání jednoduchých uvozovek kolem identifikátorů by nikdy nemělo fungovat... jednoduché uvozovky uzavírají řetězcové literály.

Řešení:k identifikátorům (názvům sloupců, názvů tabulek atd.) použijte znaky zpětného zaškrtnutí a kolem řetězcových literálů používejte jednoduché uvozovky. Nepoužívejte dvojité uvozovky kolem řetězcových literálů, aby váš kód SQL fungoval, i když je nastaveno ANSI_QUOTES.




  1. SQL - Najděte datum nejbližší aktuálnímu datu

  2. Co je MySQL:Přehled

  3. Jak vytvořit primární klíč v SQL

  4. TSQL Pivot bez agregační funkce