删除 DB2 数据库(如果存在)
Drop DB2 database if exist
我想编写 db2 命令来找出第一个数据库是否存在,如果存在该数据库,则删除该数据库并创建一个新的更新数据库。
同样请帮忙
DB2 中没有支持该指令的命令或语言。您必须定义当给定名称作为数据库的别名(不是数据库的真实名称)存在时要做什么,删除别名?重命名?
脚本如下所示:
- 列出数据库目录并过滤名称和别名(db2 list db directory)。过滤可以在 linux 中使用 Awk 或 Grep,在 Windows 中使用 Filter。
- 如果存在同名的数据库别名,则由您决定如何操作。
- 相反,如果存在具有该名称的数据库名称,则将其删除 (db2 drop db xxx)
- 创建数据库。
- 如果系统存在数据库错误(SQL1005N),则编目并删除(db2 catalog db xxx, db2 drop db xxx)
- 重试数据库创建。
首先查询系统table,在db2中为zostableSYSIBM.SYSDATABASE或SYSIBM.SYSTABLES,在db2 LUW版本tableSYSCAT.tables中。如果查询中有行,则数据库存在。
调用此函数将使您删除 table(如果存在):
CALL FNC.DROP_IF_EXISTS('TABLENAME')!
在 LUW 中,您可以:
--#SET TERMINATOR @
BEGIN
DECLARE TABLE_NOT_FOUND CONDITION FOR SQLSTATE '42704';
DECLARE CONTINUE HANDLER FOR TABLE_NOT_FOUND;
EXECUTE IMMEDIATE 'DROP TABLE myschema.mytable';
END @
您可以将此代码段转换为接收架构名称和 table 名称的函数。
我想编写 db2 命令来找出第一个数据库是否存在,如果存在该数据库,则删除该数据库并创建一个新的更新数据库。
同样请帮忙
DB2 中没有支持该指令的命令或语言。您必须定义当给定名称作为数据库的别名(不是数据库的真实名称)存在时要做什么,删除别名?重命名?
脚本如下所示:
- 列出数据库目录并过滤名称和别名(db2 list db directory)。过滤可以在 linux 中使用 Awk 或 Grep,在 Windows 中使用 Filter。
- 如果存在同名的数据库别名,则由您决定如何操作。
- 相反,如果存在具有该名称的数据库名称,则将其删除 (db2 drop db xxx)
- 创建数据库。
- 如果系统存在数据库错误(SQL1005N),则编目并删除(db2 catalog db xxx, db2 drop db xxx)
- 重试数据库创建。
首先查询系统table,在db2中为zostableSYSIBM.SYSDATABASE或SYSIBM.SYSTABLES,在db2 LUW版本tableSYSCAT.tables中。如果查询中有行,则数据库存在。
调用此函数将使您删除 table(如果存在):
CALL FNC.DROP_IF_EXISTS('TABLENAME')!
在 LUW 中,您可以:
--#SET TERMINATOR @
BEGIN
DECLARE TABLE_NOT_FOUND CONDITION FOR SQLSTATE '42704';
DECLARE CONTINUE HANDLER FOR TABLE_NOT_FOUND;
EXECUTE IMMEDIATE 'DROP TABLE myschema.mytable';
END @
您可以将此代码段转换为接收架构名称和 table 名称的函数。