sql >> Database teknologi >  >> RDS >> Mysql

mysql + import af en fil med mellemrum i kolonneoverskrifterne + hvordan man håndterer

MySQL LOAD DATA-sætningen indlæser værdier fra filen efter position , ikke ved navn.

MySQL har ingen krav om, at felternes "navne" (fra overskriften i .csv-filen) "matcher" eventuelle kolonnenavne. (Det er muligt, at en anden komponent i dit system har den type krav, men det gør MySQL LOAD DATA ikke.)

Det er gyldigt, at en .csv-fil ikke har en overskriftslinje. Når der er en overskriftslinje, "springer vi over" den ved at bruge IGNORE 1 LINES .

Som en sidebemærkning foretrækker jeg at bruge søgeordet FIELDS i LOAD DATA-sætningen i stedet for COLUMNS .

I MySQL kan identifikatorer (kolonnenavne, tabelnavne) escapes ved at bruge backtick-tegn. For at bruge en identifikator, der indeholder ugyldige tegn, f.eks. et mellemrum, skal identifikatoren escapes.

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

På mit tastatur er backtikken tasten øverst til venstre ` ~ lige til venstre for 1 ! nøgle.

ANSI_QUOTES

Hvis sql_mode variabel inkluderer ANSI_QUOTES , så kan du også bruge dobbelte anførselstegn for at undslippe identifikatorer. f.eks.

SHOW VARIABLES LIKE 'sql_mode' ;

SET sql_mode = 'ANSI_QUOTES,...' ;

SHOW VARIABLES LIKE 'sql_mode'

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

Så:

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

Hvis sql_mode gør ikke inkludere ANSI_QUOTES (enten eksplicit eller inkluderet i en anden indstilling), så virker de dobbelte anførselstegn omkring identifikatorer ikke. Og brug af enkelte anførselstegn omkring identifikatorer burde aldrig fungere... enkelte anførselstegn omslutter strenge bogstaver.

Takeaway:Brug backtick-tegn for at undslippe identifikatorer (kolonnenavne, tabelnavne osv.) og brug enkelte anførselstegn omkring strenge bogstaver. Undgå at bruge dobbelte anførselstegn omkring strenge bogstaver for at få din SQL-kode til at fungere, selv når ANSI_QUOTES er indstillet.




  1. Hvordan bruger jeg værdier for længde/breddegrad effektivt i Mysql?

  2. Fejl ved forsøg på at installere Django CMS i virtualenv med MySQL på Mac OSX

  3. Slut dig til os i Amsterdam til et møde med OptimaData &VidaXL

  4. Brug MySQL Relational Databases på Ubuntu 10.10 (Maverick)