【问题标题】:why excel export csv doesn't quote single quote?为什么excel导出csv不引用单引号?
【发布时间】:2018-05-23 12:54:22
【问题描述】:

当我将数据从 excel 导出为 CSV 格式时,它会将一些数据封装在双引号中。 例如

  1. 8" 变为 "8"""。而且我相信这个操作是试图让数据库稍后理解内部引用。
  2. 但是对于单引号 8',它保持不变,这会在我导入 csv 时导致问题(见下图)。

为什么不将8' 也引用到"8'" 中?

8'在导入时变成',而"8'"会导致8',并且不引用单引号会导致一些数据丢失。

问题相关:
what does quotechar mean in mysql while importing data?

Excel adds extra quotes on CSV export

【问题讨论】:

  • @BobKaufman 加油。你没看到8' 在导入时只变成' 吗?如果照片不好,我很抱歉。
  • 问题很清楚。它不应该被关闭。
  • @RavinderReddy 感谢您的支持。
  • @Rick... Excel 只是做它的事情,它的事情就是谋杀数据。第一条规则:如果您关心数据的完整性,请将您的数据排除在 Excel 之外;)其次,我认为这可能是您使用的 mysql 客户端的限制。如果你点击命令行you'll see that the LOAD DATA INFILE command 允许你指定FIELDS [[OPTIONALLY] ENCLOSED BY 'char'] 那个可选的OPTIONALLY 关键字就是你需要的。我在您的客户端屏幕截图中没有看到表明它可以处理 OPTIONALLY 选项的复选框。
  • 可选(我喜欢这个词)考虑将xls 输出到csv,在其中输出带有双引号的每个字段,使可选的OPTIONALLY 关键字变得多余,这样您就可以使用您的mysql客户端. See here for some options 我非常喜欢使用 VBA 来处理此类工作,但我可以肯定地说,我过去曾使用 Libreoffice 弹出打开一个 xls 文件以更好地控制数据的导出。

标签: mysql sql excel mysql-workbench


【解决方案1】:

做了这么多实验,终于找到了一个相当接近的答案。

结论第一:

  • 是Mysql Workbench 的问题。它的导入向导效果不佳。我在 Navicat 下测试每个测试数据,Navicat 一切正常。
  • 单引号可能导致意外行为。

测试:

默认情况下,Mysql 工作台导入向导将第一行值作为列名,而在 Navicat 中,我可以进行配置。

(所有测试文件都是 excel 导出的 csv utf8 编码。)

测试1:

例如:8'(只有1条记录),没有列名。

Mysql:弹出一些未知错误,无论你更改什么配置,都无法获取原始数据。
Navicat:工作正常。

测试2:

例如:8',只有 1 条记录有列名或有额外记录没有列名
Mysql:可以正确处理单引号。
Navicat:没问题。

测试3:

如果存在单引号,大多数情况导入向导不能很好地处理双引号。

例如:单引号数据位于双引号数据之前。

Mysql:完全失败。
Navicat:没问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 2018-06-25
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多