sgjr
1
【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
create table t1(id int primary key,username varchar(20),testcol longtext);
insert into t1 values(1,'aaa','{"a1":"A1","b1":"B1","c1":"","d1":"{\\\"e1\\\":\\\"E1\\\"}"}');
.tiup/components/dumpling/v7.5.4/dumpling -h 10.xxxx -u testuser -p 'xxxxxxxx' -o /home/0106 --filetype csv --sql 'select * from `db0106`.`t1` ;' --consistency "none"
【遇到的问题:问题现象及影响】
问题:打开后的testcol字段的值分成了好几段,并不是完整的一段 ,值中的a1
左侧的双引号也丢失了
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
1 个赞
小龙虾爱大龙虾
(Minghao Ren)
5
看着导出的 CSV 格式没有问题,你文件中有你的分隔符当然不建议啦,另外你不要拿 excel 看啊,那玩意不是处理数据的时候用的
你这WPS里C列是一列值么?缺失的内容好像很多啊,不止符号,A1的1,B1的1都没有?
sgjr
8
内容没有缺失,引号缺失导致wps分割有问题,将一列分成了好几列
sgjr
9
主要是导出来之后给业务看的,他们是用excel去看的,其他类型的字段是没什么问题的,目前发现这类情况用excel打开之后分割不太对
zhanggame1
(Ti D Ber G I13ecx U)
11
csv是给数据库导入用的,你要用excel看,应该直接用mysql工具导出成excel格式,navicat dbeaver 等等都行
小龙虾爱大龙虾
(Minghao Ren)
12
那你就应该用 dbeaver 类似工具导出 excel 格式
sgjr
13
因为导出到csv一直都是用的dumpling这种方式,之前都是正常的,刚好发现对于这类数据不符合预期,所以来社区问下有无解决办法, 如果不行就只能换一种方式了。
存文本靠谱点,csv和excel,会出现很多不可预知的转换问题
在使用 Dumpling 导出 CSV 文件时,有几个重要的配置选项需要注意,其中之一是 --fields-terminated-by
参数。这个参数用于指定 CSV 文件中字段之间的分隔符。选择合适的分隔符对于确保数据的正确导出和后续处理至关重要。
对于包含特殊字符的数据,可以选择使用 --fields-terminated-by '\t'
(制表符)来确保数据的完整性。
除了 --fields-terminated-by
,Dumpling 还提供了其他选项来定制 CSV 文件的格式,例如:
--csv-delimiter
:用于指定字符型变量的定界符,默认是双引号"
.
--csv-separator
:用于指定每个值之间的分隔符,建议使用不常见的字符组合以避免与数据内容冲突。
你可以参考一下官方文档的导出CSV时的选项表
https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#导出为-csv-文件
https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#dumpling-主要选项表
1 个赞
补充:
- 如果 CSV 文件遵循严格格式(每个字段仅占用一行),可以启用
strict-format
设置以允许 Dumpling 将文件分割为多个 256 MiB 大小的块以进行并行处理。这可以通过在配置文件中设置:
[mydumper]
strict-format = true
没实践过,你可以试试这个参数
sgjr
17
-
感谢提供思路,我测了一下,用csv打开的被错误分割的原因是:wps默认的的分隔符用的是逗号,
, 所以会将testcol字段中的值按照逗号给分割成了多段。另外, dumpling 似乎没有 --fields-terminated-by
参数
-
我用以下方式可以达到想要的效果,但是比较繁琐,仅供参考。目前看来没有特别好的解决办法,后续考虑换种方式导出。
操作方法如下:
- dumpling导出的时候添加以下三个参数, 将 csv 分隔符变成
#
--csv-delimiter='' --csv-separator="#" --escape-backslash=false
导出的csv内容如下:
- 将csv文件的后缀改成txt,使用wps打开,会出现导入向导,选择自定义分隔符
system
(system)
关闭
18
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。