xiaohuihuicb 2018-11-29 06:25 采纳率: 0%
浏览 1548

Tidb数据库关于load data infile 是不是ignore模式?

Tidb 能够很好的兼容MySQL,因此它也支持了MySQL的load data infile 。
但是通过今天的测试,发现他不支持使用load data local infile 'a.csv' ignore into table 'a.b';
这样使用ignore的操作?
在这边文章中TiDB 源码阅读系列文章(十六)INSERT 语句详解提到load data infile 与insert ignore into。但我在其他地方并没有找到其他的依据(也就是说不用使用ignore,就是ignore模式了)。但到底是不是这样呢? 有待考究。

        而在Tidb给的官方文档中,有这么一段解释:
 TiDB 在执行 load data 时,默认每 2 万行记录作为一个事务进行持久化存储。如果一次 load data 操作插入的数据超过 2 万行,那么会分为多个事务进行提交。如果某个事务出错,这个事务会提交失败,但它前面的事务仍然会提交成功,在这种情况下一次 load data 操作会有部分数据插入成功,部分数据插入失败。而 MySQL 中会将一次 load data 操作视为一个事务,如果其中发生失败情况,将会导致整个 load data 操作失败。

这样的话,如果我插入的时候确实出错了(或者我认为的中止了任务),这就会导致,一部分数据没有插入。那我肯定要再插入一次,这次插入肯定要使用ignore的形式进行load data infile 带ignore的格式。而在tidb的load data infile 中没有这个格式,所以可以暂时判断它是默认为ignore格式。

否则当我的数据插入一半挂掉后,我需要修改我导入数据的文件,将已经插入的数据去除,这极大的增加了工作量,Tibd如果要活下来,肯定不会有这种der的bug存在的。
所以我几乎说服我自己了。
但到底tidb 的 load data infile 是不是ignore 的模式呢,希望您给出更事实性的回答。

  • 写回答

2条回答 默认 最新

  • zqbnqsdsmd 2018-11-30 13:23
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 Jenkins+k8s部署slave节点offline
  • ¥15 微信小游戏反编译后,出现找不到分包的情况
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题