计算机视觉与机器学习在植物标本数字化中的实践应用
2026/5/12 6:23:16
DROP 语句用于从当前或指定的 Catalog 中移除已注册对象,包括 Catalog、Database、Table、View、Function、Model 等。
Flink SQL 目前支持:
DROP CATALOGDROP TABLEDROP DATABASEDROP VIEWDROP FUNCTIONDROP MODELDROP 语句在 Java 侧的执行方式和 CREATE 一样:调用TableEnvironment.executeSql(),成功返回OK,失败抛异常。
示例流程(注册表 → 列表查看 → 删除表 → 再查看):
TableEnvironmenttableEnv=TableEnvironment.create(...);// register a table named "Orders"tableEnv.executeSql("CREATE TABLE Orders (`user` BIGINT, product STRING, amount INT) WITH (...)");// list tablesString[]tables=tableEnv.listTables();// or: tableEnv.executeSql("SHOW TABLES").print();// drop table from catalogtableEnv.executeSql("DROP TABLE Orders");// list tables againString[]tables2=tableEnv.listTables();DROPCATALOG[IFEXISTS]catalog_name;IF EXISTS:catalog 不存在时不报错,直接忽略。DROP[TEMPORARY]TABLE[IFEXISTS][catalog_name.][db_name.]table_name;IF EXISTS:表不存在会抛异常。TEMPORARY:删除临时表(带 catalog/db 命名空间的临时对象)。DROPDATABASE[IFEXISTS][catalog_name.]db_name[(RESTRICT|CASCADE)];RESTRICT(默认):如果库非空(还有表/函数),会报错,防止误删。CASCADE:删除非空库时,会连同库内关联的表与函数一起删除。生产建议:
RESTRICT,避免一条命令清空库。CASCADE,但必须加确认机制或白名单。DROP[TEMPORARY]VIEW[IFEXISTS][catalog_name.][db_name.]view_name;Flink 文档明确提示:Flink 不会像一些数据库那样用 CASCADE/RESTRICT 维护视图依赖。当前表现是:如果视图引用的底层表被删了,Flink 不会自动删视图,而是等你下次使用视图时抛“延迟错误”。
工程建议:
SHOW CREATE VIEW/ 维护一份视图依赖清单(如果你有大量视图)。DROP[TEMPORARY|TEMPORARYSYSTEM]FUNCTION[IFEXISTS][catalog_name.][db_name.]function_name;TEMPORARY:删临时 catalog functionTEMPORARY SYSTEM:删临时系统函数(无命名空间)IF EXISTS:不存在不报错DROP[TEMPORARY]MODEL[IFEXISTS][catalog_name.][db_name.]model_name;IF EXISTS:不存在会抛异常IF EXISTS:不存在忽略IF EXISTS:脚本幂等化,避免多环境执行失败。