2017-04-14 60 views
5

Chcę zaimportować plik .csv do bazy danych MySQL przez:MySQL Nieprawidłowy UTF8 ciąg znaków podczas importowania tabeli csv

load data local infile 'C:\\Users\\t_lichtenberger\\Desktop\\tblEnvironmentLog.csv' 
into table tblenvironmentlog 
character set utf8 
fields terminated by ';' 
lines terminated by '\n' 
ignore 1 lines; 

Plik .csv wygląda następująco: enter image description here

Ale otrzymuję po błędzie i nie mogę wyjaśnić, dlaczego:

Error Code: 1300. Invalid utf8 character string: 'M' 

Wszelkie sugestie?

+0

Jakie ustawienia _on na export_ ? –

Odpowiedz

5

Zobacz, jakie ustawienia eksportubyły. Szukaj "UTF-8".

This sugeruje, że "Obcięty tekst" spowodowany jest tym, że dane nie są zakodowane jako utf8mb4. Poza MySQL, "szukaj" UTF-8 ". (Wewnątrz, MySQL, utf8 i utf8mb4 działają równie dobrze dla wszystkich europejskich zestawów znaków, więc nie powinno stanowić problemu.

Jeśli został wyeksportowany jako" cp1252 " (lub jeden z wielu kodowania) bajtu na ü nie jest ważny dla utf8mb4, co prowadzi do skrócenia

Jeżeli taka analiza jest poprawna, są dwa rozwiązania.

Plan a: export jak UTF-8

Plan B: Importuj jako . (Nie potrzebujesz aby zmienić definicję kolumny/tabeli, wystarczy LOAD DATA.)

1

To narzeka na 'M', ale myślę, że jest w München, a problematyczna postać jest następna, umlaut 'ü'.

Jednym z prostych testów jest próba załadowania pliku za pomocą tylko pierwszych 2 wierszy. & Sprawdź, czy to działa. Następnie dodaj trzeci wiersz, spróbuj ponownie & Sprawdź, czy to nie powiedzie się.

Jeśli nie możesz lub nie chcesz zamienić tych znaków specjalnych w swoich danych, musisz rozpocząć badanie zestawów znaków skonfigurowanych w pliku CSV, bazie danych, tabeli, kolumnach, narzędziach itd.

Czy używasz MySQL w wersji 5.7 lub nowszej? Następnie możesz wypróbować jedną z nich: character set utf8mb4 w poleceniu load data.

Zobacz podobną sprawę pod numerem How MySQL 5.7 Handles 'utf8mb4' and the Load Data Infile.

zobacz także:

import geonames allCountries.txt into MySQL 5.7 using LOAD INFILE - ERROR 1300 (HY000)

Trouble with utf8 characters; what I see is not what I stored

“Incorrect string value” when trying to insert UTF-8 into MySQL via JDBC?

1

Wystarczy otworzyć plik CSV w edytorze tekstowym (np Nodepad ++)

i zmienić kodowanie pliku na UTF-8

następnie zaimportować plik CSV