- 【TiDB 版本】:4.0.0
- 【问题描述】:
在对分区表导入数据时,需要先判断分区是否存在。
如果存在则需要truncate分区,如果不存在则创建分区,这个用sql如何实现?
发现在创建分区时,支持IF NOT EXISTS语句,在DROP分区时,也支持IF EXISTS,但是在TRUNCATE分区时却不支持(也可能是我写的语法不对?颠来倒去试了半天也没成功)
如:
ALTER TABLE mytab DROP PARTITION IF EXISTS p20200831; – OK
ALTER TABLE mytab ADD PARTITION IF NOT EXISTS (PARTITION p20200831 VALUES LESS THAN (TO_DAYS(20200901))); – OK
ALTER TABLE mytab TRUNCATE PARTITION IF EXISTS p20200831; – ERROR
所以说,目前只能先创建分区(IF NOT EXISTS),然后再truncate一下吗?像下面这样:
ALTER TABLE mytab ADD PARTITION IF NOT EXISTS (PARTITION p20200831 VALUES LESS THAN (TO_DAYS(20200901)));
ALTER TABLE mytab TRUNCATE PARTITION p20200831;
感觉新建出来的分区再truncate有点蠢,有没有更好的办法实现这个需求?
另外,是否可以用sql查询某个指定分区是否存在?比如存在返回1,不存在返回0之类的