Posterior a investigar con expertos en el tema, programadores de diversas ramas y maestros dimos con la solución al dilema y la compartimos en esta publicación.
Solución:
Nada más que probé funcionó para mí, incluido asegurarme de que mi .csv se guardara con la codificación UTF-8.
Esto funcionó:
Cuando usas LOAD DATA LOCAL INFILE
establecer CHARACTER SET latin1
en vez de CHARACTER SET utf8mb4
como se muestra en https://dzone.com/articles/mysql-57-utf8mb4-and-the-load-data-infile
Aquí hay un ejemplo completo que funcionó para mí:
TRUNCATE homestead_daily.answers;
SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE homestead_daily.questions;
SET FOREIGN_KEY_CHECKS = 1;
LOAD DATA LOCAL INFILE 'C:/Users/me/Desktop/questions.csv' INTO TABLE homestead_daily.questions
CHARACTER SET latin1
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY 'rn'
IGNORE 1 LINES
(type, question, created_at, updated_at);
SELECT * FROM homestead_daily.questions;
Vea cuáles son los ajustes para el exportar fueron. Busque “UTF-8”.
Este sugiere que el “texto truncado” se debe a que los datos no están codificados como utf8mb4. Fuera de MySQL, “busque “UTF-8”. (Dentro, MySQL, utf8 y utf8mb4 funcionan igual de bien para todos los conjuntos de caracteres europeos, por lo que el ü
no debería ser un problema.
Si se exportó como “cp1252” (o cualquiera de varias codificaciones), el byte para ü
no sería válido para utf8mb4, lo que provocaría un truncamiento.
Si este análisis es correcto, hay dos soluciones:
Plan A: Exportar como UTF-8
.
Plan B: Importar como latin1
. (No necesita cambiar la definición de columna/tabla, solo la LOAD DATA
.)
Simplemente abra el archivo csv en su editor de texto (como Nodepad ++)
y cambie la codificación del archivo a UTF-8
luego importe su archivo csv
Si piensas que te ha sido provechoso nuestro artículo, te agradeceríamos que lo compartas con el resto programadores de este modo nos ayudas a dar difusión a este contenido.