Flink基礎(二十九):FLINK-SQL語法(五)DDL(二)DROP 語句


0 簡介

DROP 語句用於從當前或指定的 Catalog 中刪除一個已經注冊的表、視圖或函數。

Flink SQL 目前支持以下 DROP 語句:

  • DROP TABLE
  • DROP DATABASE
  • DROP VIEW
  • DROP FUNCTION

1 執行 DROP 語句

可以使用 TableEnvironment 中的 executeSql() 方法執行 DROP 語句,也可以在 SQL CLI 中執行 DROP 語句。 若 DROP 操作執行成功,executeSql() 方法返回 ‘OK’,否則會拋出異常。

以下的例子展示了如何在 TableEnvironment 和 SQL CLI 中執行一個 DROP 語句。

val settings = EnvironmentSettings.newInstance()...
val tableEnv = TableEnvironment.create(settings)

// 注冊名為 “Orders” 的表
tableEnv.executeSql("CREATE TABLE Orders (`user` BIGINT, product STRING, amount INT) WITH (...)")

// 字符串數組: ["Orders"]
val tables = tableEnv.listTables()
// or tableEnv.executeSql("SHOW TABLES").print()

// 從 catalog 刪除 “Orders” 表
tableEnv.executeSql("DROP TABLE Orders")

// 空字符串數組
val tables = tableEnv.listTables()
// or tableEnv.executeSql("SHOW TABLES").print()
Flink SQL> CREATE TABLE Orders (`user` BIGINT, product STRING, amount INT) WITH (...);
[INFO] Table has been created.

Flink SQL> SHOW TABLES;
Orders

Flink SQL> DROP TABLE Orders;
[INFO] Table has been removed.

Flink SQL> SHOW TABLES;
[INFO] Result was empty.

2 DROP TABLE

DROP TABLE [IF EXISTS] [catalog_name.][db_name.]table_name

根據給定的表名刪除某個表。若需要刪除的表不存在,則拋出異常。

IF EXISTS

表不存在時不會進行任何操作。

3 DROP DATABASE

DROP DATABASE [IF EXISTS] [catalog_name.]db_name [ (RESTRICT | CASCADE) ]

根據給定的表名刪除數據庫。若需要刪除的數據庫不存在會拋出異常 。

IF EXISTS

若數據庫不存在,不執行任何操作。

RESTRICT

當刪除一個非空數據庫時,會觸發異常。(默認為開)

CASCADE

刪除一個非空數據庫時,把相關聯的表與函數一並刪除。

4 DROP VIEW

DROP [TEMPORARY] VIEW  [IF EXISTS] [catalog_name.][db_name.]view_name

刪除一個有 catalog 和數據庫命名空間的視圖。若需要刪除的視圖不存在,則會產生異常。

TEMPORARY

刪除一個有 catalog 和數據庫命名空間的臨時視圖。

IF EXISTS

若視圖不存在,則不會進行任何操作。

依賴管理 Flink 沒有使用 CASCADE / RESTRICT 關鍵字來維護視圖的依賴關系,當前的方案是在用戶使用視圖時再提示錯誤信息,比如在視圖的底層表已經被刪除等場景。

5 DROP FUNCTION

DROP [TEMPORARY|TEMPORARY SYSTEM] FUNCTION [IF EXISTS] [catalog_name.][db_name.]function_name;

刪除一個有 catalog 和數據庫命名空間的 catalog function。若需要刪除的函數不存在,則會產生異常。

TEMPORARY

刪除一個有 catalog 和數據庫命名空間的臨時 catalog function。

TEMPORARY SYSTEM

刪除一個沒有數據庫命名空間的臨時系統函數。

IF EXISTS

若函數不存在,則不會進行任何操作。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM