可以在 Impala 中一次删除多个视图

Can one drop multiple views at once in Impala

我有一个包含三个视图的数据库。我正在尝试执行一个命令来同时删除所有三个。

Impala Guide 表明可以使用

一次删除一个视图

DROP VIEW IF EXISTS mydb.view_name

但它没有建议删除多个视图的方法,同时指南中的 this page 也没有建议这将是一个限制。

如果我使用 SQL 服务器(以及 SQL 的其他版本),我可以按照 this tutorial 中所示的方法,用 , 分隔视图.

DROP VIEW IF EXISTS 
                   mydb.view_v1,
                   mydb.view_v2,
                   mydb.view_v3;

我希望这会从数据库中删除三个视图。

然而,当我在 Impala 中尝试此操作时,出现以下错误:

AnalysisException: Syntax error in line 2:undefined: ...exists mydb.view_v1, mydb.view_v2, mydb... ^ Encountered: COMMA Expected: ADD, ALTER, AS, CACHED, CHANGE, COMMENT, DROP, FROM, LIKE, LOCATION, PARTITION, PARTITIONED, PRIMARY, PURGE, RECOVER, RENAME, REPLACE, ROW, SELECT, SET, SORT, STORED, STRAIGHT_JOIN, TBLPROPERTIES, TO, UNCACHED, VALUES, WITH CAUSED BY: Exception: Syntax error

并且所有视图都保留。

显然,该错误表明在 Impala 术语中,您的语句在句法上不正确(并且不受支持)。

我能想到的模拟类似于您需要的东西的唯一方法是将所有视图放入一个单独的数据库中,然后 运行 一个 DROP DATABASE ... CASCADE。我希望此操作以原子方式运行,即作为一个单元成功或失败。