【问题标题】:MySQL includes comma on a Tab delimited file (LOAD DATA INFILE)MySQL 在制表符分隔的文件中包含逗号 (LOAD DATA INFILE)
【发布时间】:2012-09-23 19:50:08
【问题描述】:

这是一个特殊的场景: 我正在尝试将制表符分隔文件导入 mysql,其中某些行的价格列高于 1,000。当我完成导入时,逗号后面的值被排除在外,最后我的表中只有 1。在 Linux 和 Windows 环境中都进行了尝试,结果相同。

例如,如果制表符分隔文件中的第 1 行、第 1 列包含值 1,564.50,我的 MySQL 表中的第 1 行第 1 列中的值最终为 1。 这是我正在使用的语句。

LOAD DATA LOCAL INFILE 'blah.txt'
 INTO TABLE `table1`
 FIELDS TERMINATED BY '\t'
 OPTIONALLY ENCLOSED BY  ''''
 LINES TERMINATED BY '\n';

所以我的问题是 1.有人可以确认这一点,或者如果我遗漏了一些东西,我该如何解决这个问题。 2. 如果这是一个 mysql 错误,我有什么选项可以解决正确导入这些值直到 mysql 修复它。

【问题讨论】:

  • 你能举一个你的源数据的示例行吗?
  • mysql 使用\' 转义引号,而不是''。请改用optionally enclosed by '\''"'"
  • 请提供 CSV 文件中的一些行。
  • 示例行:'123456' '123456' 产品名称 9 0 0 9 1,555.17 'desc' 1,799.00
  • 我尝试同时使用 \' 和 ''。不幸的是同样的行为

标签: mysql tabs comma delimited file-io


【解决方案1】:

Windows 的默认分隔符是逗号。将其更改为另一个字符并将其与您的源数据匹配。

更改默认分隔符:

转到控制面板 --> 区域和语言选项(或日期、时间和区域选项 --> 在某些机器上的区域和语言选项) --> 单击自定义按钮。在打开的对话框中,您将看到“列表分隔符”选项,您可以在其中将逗号更改为不同的字符 --> 单击应用,然后单击确定,然后再次应用。现在,当您进入 Excel 并选择导出为 CSV 时,新字符将用作分隔符。

【讨论】:

  • 即使您使用 FIELDS TERMINATED BY '\t' 数据源仍将由逗号分隔,这就是您在第 1 行第 1 列上得到 1 的原因,因为该值有一个逗号 (1,000)
  • 我在 linux 和 windows 环境中都试过了,结果相同。所以改变区域设置没有任何意义吗?无论如何,我有反引号作为区域设置,结果仍然相同。
  • 你没有明白我的意思,先生,我想说的是,即使你在 mysql 中使用 FIELD TERMINATED BY '\t' 它仍然会遵循逗号分隔符,因为它是 Windows 上的默认分隔符。您需要做的是将分隔符列表改为制表符。请查看此链接上的图片。 Change list separator in Windows
  • 如图所示,分隔符列表设置为分号(;) 但默认是逗号(,) 所以你必须更改逗号 (,) 我只是不确定 \t 是否有效。
猜你喜欢
  • 1970-01-01
  • 2021-12-06
  • 2011-08-30
  • 1970-01-01
  • 2021-02-02
  • 2013-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多