indexchar在导入数据时在mysql中的含义是什么?

时间:2018-05-22 16:41:52

标签: mysql sql mysql-workbench

有人给我发了一个xlsx excel文件,我用excel打开它,并用utf8编码保存为csv。

我使用mysql workbench导入向导将excel制作的utf8 csv 文件导入数据库表。但导入的结果遗漏了一些数据(少于它应该有的数据)。

我认为它与 quotechar 有关。

默认情况下, quotechar 是双引号,但我有一些这样的数据(混合单引号和双引号):

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

我尝试省略该值,但它不能(请参阅图片中的错误)。

所以我想知道:

  1. quotechar 在这里意味着什么?它是如何工作的?为什么这有关系?它只能导入csv文件中的所有内容吗?
  2. 如何在我的数据混合单引号和双引号时正确导入数据(稍后我需要检索它们并用作搜索关键字,以便保留原始表单更好)?
  3. enter image description here

    我的数据在excel中看起来像这样: enter image description here

1 个答案:

答案 0 :(得分:2)

我假设您要将数据从Excel导出为CSV,因此这在Excel中的显示方式无关紧要。

当您将Excel中的数据导出为CSV格式时,它会将您的数据封装在双引号中。数据本身中的任何双引号都将由excel自动转发第二个双引号。

例如,如果您的数据是:

 8"

导出时将是:

 "8"""

你必须告诉Mysql你在字符"中包含字符串。这就是它所谈论的quotechar。它是您填写的表单上的第二个字段。

我不确定MySQl会有多挑剔,因为我还没有永远地将CSV导入Mysql。 Excel CSV输出的技巧是,如果您有以下数据:

8"
8'

它将输出为CSV:

"8"""
8'

第二个记录/字段没有获得双引号封装,因为它不包含需要封装的字符(双引号,回车符或换行符)。

Mysql 可能阻塞第二条记录(希望它的导入过程足够强大,可以处理封装和非封装的字段)