Archivo .csv de Excel vs archivo .csv de Libre Office

1

Creé un archivo .csv simple con Excel que se ve así: ingrese la descripción de la imagen aquí

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 idla 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?

Poete Maudit
fuente
1
Es posible que deba comparar sus archivos con un editor hexadecimal para comprender la diferencia. Los editores de texto no son buenos para mostrar caracteres que no se imprimen.
Máté Juhász

Respuestas:

1

La idea de @Máté Juhászconsiderar el editor hexadecimal era bastante buena.

El archivo .csv de Excel muestra el siguiente contenido en el editor hexadecimal:

Ôªøid,name
1,hello

mientras que el archivo .csv de Libre Office muestra lo siguiente:

id,name
1,Hello

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 la Comma-Separated Values (.csv)codificación.

Por último, permítanme señalar que estoy de acuerdo con @Pimp Juice ITeso 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.

Poete Maudit
fuente
Veo que la declaración SQL se genera como parte del proceso y no es algo que especifique manualmente. Interesante ....
Pimp Juice IT
Sí, simplemente importé los archivos .csv a la base de datos. No escribí ninguna consulta manualmente. Pero gracias por tu idea. :)
Poete Maudit
La marca de orden de bytes (BOM) a menudo se agrega al comienzo de los archivos Unicode, y se muestra como tres caracteres cuando se ve como UTF-8. Aparentemente, MySQL espera una codificación no Unicode.
Jim K
Sí, así es como se ve @JimK.
Poete Maudit