Saya ingin mengimpor file .csv ke dalam database MySQL oleh:
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;
Tetapi saya mendapatkan kesalahan berikut dan saya tidak dapat menjelaskan mengapa:
Error Code: 1300. Invalid utf8 character string: 'M'
Ada saran?
Lihat apa pengaturan untuk export itu. Cari "UTF-8".
Ini menunjukkan bahwa "Teks terpotong" disebabkan oleh data yang tidak dikodekan sebagai utf8mb4. Di luar MySQL, "carilah "UTF-8" (Di dalam, MySQL, utf8 dan utf8mb4 bekerja sama baiknya untuk semua set karakter Eropa, jadi ü
seharusnya tidak menjadi masalah.
Jika diekspor sebagai "cp1252" (atau salah satu dari sejumlah penyandian), byte untuk ü
tidak akan valid untuk utf8mb4, yang menyebabkan pemotongan.
Jika analisis ini benar, ada dua solusi:
Rencana A: Ekspor sebagai UTF-8
.
Rencana B: Impor sebagai latin1
. (Anda tidak perlu mengubah definisi kolom/tabel, hanya LOAD DATA
.)
Cukup buka file csv di editor teks Anda (seperti Nodepad++)
dan ubah file Encoding ke UTF-8
lalu impor file csv Anda
Ini mengeluh tentang 'M'
tapi saya pikir itu'dalam München
dan karakter bermasalah yang sebenarnya adalah yang berikutnya, umlaut 'ü'
.
Salah satu cara sederhana untuk mengujinya adalah dengan mencoba memuat file hanya dengan 2 baris pertama &; lihat apakah itu berhasil. Kemudian tambahkan baris ke-3, coba lagi & lihat apakah gagal.
Jika Anda tidak dapat atau tidak ingin mengganti karakter khusus ini dalam data Anda, maka Anda harus mulai menyelidiki set karakter yang dikonfigurasi dalam file CSV, database, tabel, kolom, alat, dll...
Apakah Anda menggunakan MySQL 5.7 atau di atasnya? Maka sesuatu yang sederhana untuk dicoba adalah mengubah ke karakter set utf8mb4
dalam perintah memuat data
Anda.
Lihat How MySQL 5.7 Handles 'utf8mb4' and the Load Data Infile untuk masalah serupa.
Lihat juga:
import geonames allCountries.txt ke dalam MySQL 5.7 menggunakan LOAD INFILE - ERROR 1300 (HY000)2
Masalah dengan karakter utf8; apa yang saya lihat bukan apa yang saya simpan
["Nilai string salah" ketika mencoba memasukkan UTF-8 ke MySQL melalui JDBC?