Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql + import pliku ze spacjami w nagłówkach kolumn + sposób obsługi

Instrukcja MySQL LOAD DATA ładuje wartości z pliku według pozycji , a nie z nazwy.

MySQL nie ma żadnych wymagań dotyczących „nazw” pól (z wiersza nagłówka w pliku .csv) „pasujących” do nazw kolumn. (Możliwe, że jakiś inny komponent twojego systemu ma tego typu wymagania, ale MySQL LOAD DATA nie.)

Plik .csv może nie mieć wiersza nagłówka. Gdy istnieje wiersz nagłówka, zwykle „przeskakujemy” go, używając IGNORE 1 LINES .

Na marginesie wolę używać słowa kluczowego FIELDS w instrukcji LOAD DATA w miejsce COLUMNS .

W MySQL identyfikatory (nazwy kolumn, nazwy tabel) mogą być zmieniane za pomocą znaków backtick. Aby użyć identyfikatora, który zawiera nieprawidłowe znaki, takie jak spacja, identyfikator musi zostać zmieniony.

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

Na mojej klawiaturze znak zaznaczenia to klawisz w lewym górnym rogu ` ~ tuż na lewo od 1 ! klawisz.

ANSI_QUOTES

Jeśli sql_mode zmienna zawiera ANSI_QUOTES , możesz także użyć podwójnych cudzysłowów do ucieczki identyfikatorów. np.

SHOW VARIABLES LIKE 'sql_mode' ;

SET sql_mode = 'ANSI_QUOTES,...' ;

SHOW VARIABLES LIKE 'sql_mode'

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

Następnie:

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

Jeśli sql_mode czy nie uwzględnij ANSI_QUOTES (jako jawnie lub w innym ustawieniu), wtedy podwójne cudzysłowy wokół identyfikatorów nie działają. A używanie pojedynczych cudzysłowów wokół identyfikatorów nigdy nie powinno działać... pojedyncze cudzysłowy zawierają literały ciągu.

Na wynos:użyj znaków backtick, aby uciec przed identyfikatorami (nazwy kolumn, nazwy tabel itp.) i użyj pojedynczych cudzysłowów wokół literałów ciągu. Unikaj używania podwójnych cudzysłowów wokół literałów łańcuchowych, aby Twój kod SQL działał nawet wtedy, gdy ustawiono ANSI_QUOTES.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Moja aplikacja uzyskuje dostęp do zdalnej bazy danych. Jak sprawnie przeprowadzić testy jednostkowe?

  2. IIS 7.5 używający 32-bitowego sterownika zamiast 64-bitowego

  3. Nie można zainstalować mysql2 dla szyn 3 w systemie Windows

  4. Uwaga:formularz na tej stronie zawiera ponad 1000 pól PHP MySql

  5. MySQL Spatial CONTAINS pokazuje błędny wynik