1

Я создал простой файл .csv с Excel, который выглядит следующим образом:

Я также создал тот же файл .csv с помощью Libre Office.

Оба файла .csv выглядят абсолютно одинаково в TextEdit:

id, questions
1, Hello World

Однако, когда я пытаюсь импортировать их в базу данных MySQL на PhpMyAdmin, происходит нечто удивительное. Последний файл правильно импортируется в базу данных. Но когда я пытаюсь импортировать в него прежний файл, я получаю следующую ошибку:

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

Если я правильно понимаю, эта ошибка возникает из-за того, что имя первого столбца в файле .csv - это id который является зарезервированным словом для базы данных. Тем не менее, эта ошибка не возникает вообще в случае файла .csv, который создается в Libre Office.

Почему это происходит?

1 ответ1

1

Идея @Máté Juhász относительно шестнадцатеричного редактора была довольно хорошей.

Файл .csv из Excel отображает следующее содержимое в шестнадцатеричном редакторе:

Ôªøid,name
1,hello

тогда как файл .csv из Libre Office отображает следующее:

id,name
1,Hello

Очевидно, я могу использовать Libre Office для этой задачи, как я всегда делал до сих пор; Я просто хотел, чтобы два воспользовались полезными функциями в Excel.

Однако, наконец, я понял, что получаю эту "ошибку" в кодировке Excel в CSV-формате по умолчанию - CSV UTF-8 (Comma delimited) (.csv) но я не получаю ее, если перехожу на Comma-Separated Values (.csv) Кодировка отдельных значений (.csv) .

Наконец, позвольте мне отметить, что я согласен с @Pimp Juice IT в том, что способ кодирования файла .csv из Excel был равносилен забыванию указать имя первого столбца таблицы в базе данных. Но я хотел найти объяснение, почему это происходит на уровне Excel.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .