gpt4 book ai didi

db2 - 创建或替换表 DB2?

转载 作者:行者123 更新时间:2023-12-03 03:47:58 27 4
gpt4 key购买 nike

作为 python 脚本的一部分,我运行以下 3 个 SQL 语句,以便在其余代码更新主表之前创建备份副本:

DROP TABLE TABLEAU.TESTTABLEJBCOPY;
CREATE TABLE TABLEAU.TESTTABLEJBCOPY LIKE TABLEAU.TESTTABLEJB;
INSERT INTO TABLEAU.TESTTABLEJBCOPY (SELECT * FROM TABLEAU.TESTTABLEJB);

除了表 TABLEAU.TESTTABLEJBCOPY 不存在的情况下,此方法工作正常。

我尝试过使用:

CREATE OR REPLACE TABLE TABLEAU.TESTTABLEJBCOPY LIKE TABLEAU.TESTTABLEJB;
INSERT INTO TABLEAU.TESTTABLEJBCOPY (SELECT * FROM TABLEAU.TESTTABLEJB);

但是它不断出现错误

Exception: [IBM][CLI Driver][DB2/LINUXX8664] SQL0104N An unexpected token "TABLE" was found following "CREATE OR REPLACE ". Expected tokens may include: "TYPE". SQLSTATE=42601 SQLCODE=-104

我不知道如何处理。

或者,是否有更好的方法可以在尝试删除表之前检查该表是否不存在。

谢谢

最佳答案

对于 Db2-Linux/Unix/Windows 直至版本 11.1,没有“创建或替换表”之类的语法。其他 Db2 平台可能会有所不同(因为 z/OS、i 系列和 Linux/Unix/Windows 之间的语法有所不同)。

从 Db2 for Linux/Unix/Windows v11.5 开始,IBM 添加了新语法 create table ... if noteshesdrop table ... ifeshens .

对于V11.5之前的版本,您可以先删除表(如果不存在则忽略警告),然后再创建表。如果表不存在,您可以编写脚本来忽略与删除表失败对应的 SQLSTATE。

您还可以在删除表之前复合 SQL 来查询该表是否存在。这是经常被问到的。该机制也可能因 Db2 服务器操作系统平台而异。

为了创建表的备份副本,您还可以考虑在使用 CREATE TABLE LIKE 之前向表名添加时间戳(作为后缀或前缀)。这样您就不太可能需要删除该表(除非稍后您知道不再需要备份副本时手动删除)。

关于db2 - 创建或替换表 DB2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48026041/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com