load data 最后一列多余引号

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:v4.0.2
  • 【问题描述】:

load data infile 导入csv文件, 每列以" 引号包裹,导入后最后一列仍然出现引号。

期待的结果为columns enclosed by ‘"’ 生效,剔除CSV所有列的引号

去掉引号,分隔符使用 tab 英文逗号看下是否可以

无引号情况测试为正常。 但CSV是客户提供,格式就是如此。 估计还是这 ENCLOSED BY的解析逻辑有问题。

如果方便可否将 load data 语句,表结构和 csv 提供一份,我们在分析一下

create table csv_fd21488451764be89d32b0f481724c00 ( 测试数据备注 VARCHAR(2000), a VARCHAR(2000), b VARCHAR(2000), c VARCHAR(2000), d VARCHAR(2000), e VARCHAR(2000), f VARCHAR(2000), g VARCHAR(2000) ) comment ‘dom’

load data local infile ‘upload/2.csv’ ignore into table csv_fd21488451764be89d32b0f481724c00 columns enclosed by ‘"’ terminated by ‘,’ LINES TERMINATED BY ’

ignore 1 lines (测试数据备注, a, b, c, d, e, f, g)

CSV文件: 2.csv (1.4 KB)
建表和导入SQL create-table.sql (484 字节)

辛苦在命令行执行下:
select tidb_version();

select tidb_version();

Release Version: v4.0.2
Edition: Community
Git Commit Hash: 328b6d0a955c4668cf3188d02a6df42e16eaab4e
Git Branch: heads/refs/tags/v4.0.2
UTC Build Time: 2020-07-01 08:19:48
GoVersion: go1.13
Race Enabled: false
TiKV Min Version: v3.0.0-60965b006877ca7234adaced7890d7b029ed1306
Check Table Before Drop: false

通过tiup部署v4.0.0 并tiup cluster upgrade 升级上来的。

你好,


这边发现把文本内容复制到 linux 和 将附件传到 linux 字节数多个 3 个(因为只用了三行数据)
此问题定位是 windows 环境的换行符的问题

解决办法。在 VIM 中使用 :%s/\r//g 删除掉 \r 之后可以正常导入。

我们也在看下是否可以在 load data 支持此换行符。

mysql 这边也有类似的问题:

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。