что означает quotechar в mysql при импорте данных? - PullRequest
0 голосов
/ 22 мая 2018

Кто-то прислал мне файл xlsx excel, и я открыл его в excel и сохранил как csv с кодировкой utf8.


Я использую мастер импорта mysql workbench для импорта созданного в Excel файлаutf8 csv файл в таблицу базы данных.Но импортированный результат пропустил некоторые данные (меньше, чем следовало бы).

И я думаю, что он как-то связан с quotechar .

По умолчанию quotechar - двойная кавычка, но у меня есть некоторые данные, подобные этой (смешивая одинарную кавычку и двойную кавычку):

  • 8'10 "foo bar
  • 4" x 6 "foo foo bar

Я пытаюсь опустить значение, но оно не может (см. ошибку на рис.).

Итак, здесь я хочу выяснить:

  1. Что здесь означает quotechar ? Как это работает? Почему это важно? Разве нельзя просто импортировать все из файла csv?
  2. Как я могуимпортировать данные правильно, в то время как мои данные смешивают одинарные и двойные кавычки (позже мне нужно будет извлечь их и использовать в качестве ключевых слов для поиска, чтобы было лучше сохранить исходную форму)?

enter image description here

мои данные в Excel выглядят так: enter image description here

1 Ответ

0 голосов
/ 22 мая 2018

Я предполагаю, что вы собираетесь экспортировать свои данные из Excel в формате CSV, поэтому то, как это выглядит в Excel, не имеет значения.

Когда вы экспортируете данные из Excel в формате CSV, они будут заключены в двойные кавычки.Любые двойные кавычки в самих данных будут автоматически заменяться второй двойной кавычкой в ​​Excel.

Например, если ваши данные:

 8"

При экспорте они будутbe:

 "8"""

Вы должны сообщить Mysql, что вы заключаете строки в символ ".Это quotechar, о котором идет речь.Это второе поле в этой форме, которое вы заполняете.

Я не уверен, насколько разборчивым будет MySQl, поскольку я не импортировал CSV в Mysql во веки веков.Уловка с выходом Excel CSV заключается в том, что если у вас есть такие данные, как:

8"
8'

Он будет выводить их как CSV:

"8"""
8'

Вторая запись / поле не получаетИнкапсуляция в двойных кавычках, поскольку она не содержит символа, который требует инкапсуляции (двойные кавычки, возврат каретки или перевод строки).

Mysql может захлебнуться второй записью (хотя, надеюсь, процесс импорта достаточно надежен для обработки инкапсулированных и некапсулированных полей)

...