Creé un archivo .csv simple con Excel que se ve así:
También creé el mismo archivo .csv usando Libre Office.
Ambos archivos .csv se ven absolutamente iguales en TextEdit:
id, questions
1, Hello World
Sin embargo, cuando trato de importarlos a la base de datos MySQL en PhpMyAdmin, sucede algo sorprendente. El último archivo se importa correctamente a la base de datos. Pero cuando intento importarle el archivo anterior, aparece el siguiente error:
Error
Static analysis:
5 errors were found during analysis.
A symbol name was expected! A reserved keyword can not be used as a column name without backquotes. (near "int" at position 46)
At least one column definition was expected. (near "int" at position 46)
Unexpected beginning of statement. (near "1" at position 50)
Unexpected beginning of statement. (near "`question`" at position 54)
Unrecognized statement type. (near "varchar" at position 65)
SQL query:
CREATE TABLE IF NOT EXISTS `Sample`.`TABLE 3` ( int(1), `question` varchar(5), `keywords` varchar(5), `answer` varchar(5)) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'int(1), `question` varchar(5), `keywords` varchar(5), `answer` varchar(5)) DEFAU' at line 1
Si lo entiendo bien, este error ocurre porque el nombre de la primera columna en el archivo .csv es id
la palabra reservada para la base de datos. Sin embargo, este error no se produce en absoluto en el caso del archivo .csv que se crea en Libre Office.
¿Por qué está pasando esto?
microsoft-excel
mysql
csv
libreoffice
Poete Maudit
fuente
fuente
Respuestas:
La idea de
@Máté Juhász
considerar el editor hexadecimal era bastante buena.El archivo .csv de Excel muestra el siguiente contenido en el editor hexadecimal:
mientras que el archivo .csv de Libre Office muestra lo siguiente:
Obviamente, puedo usar Libre Office para esta tarea como siempre lo hice hasta ahora; Simplemente quería que dos aprovecharan funciones útiles en Excel.
Sin embargo, finalmente, descubrí que estaba recibiendo este "error" en la codificación .csv predeterminada de Excel, que es,
CSV UTF-8 (Comma delimited) (.csv)
pero no lo obtengo si cambio a laComma-Separated Values (.csv)
codificación.Por último, permítanme señalar que estoy de acuerdo con
@Pimp Juice IT
eso en la forma en que se codificó el archivo .csv de Excel fue como olvidar establecer el nombre de la primera columna de la tabla en la base de datos. Pero quería encontrar una explicación de por qué sucede esto a nivel de Excel.fuente