如何在sql DB2中重命名表/移动到不同的模式?

如何在sql DB2中重命名表/移动到不同的模式?,db2,rename,db2-luw,Db2,Rename,Db2 Luw,我试图在db2中重命名一个表,如下所示 rename table schema1.mytable to schema2.mytable 但是获取以下错误消息: the name "mytable" has the wrong number of qualifiers.. SQLCODE=-108,SQLSTATE=42601 这里有什么问题。。。。我使用的是IBM publib文档中的确切语法。在提供的示例中,您没有重命名表,而是尝试移动到不同的模式,这不是一回事。查看此工具。您不能更改给定

我试图在db2中重命名一个表,如下所示

rename table schema1.mytable to schema2.mytable
但是获取以下错误消息:

the name "mytable" has the wrong number of qualifiers.. SQLCODE=-108,SQLSTATE=42601

这里有什么问题。。。。我使用的是IBM publib文档中的确切语法。

在提供的示例中,您没有重命名表,而是尝试移动到不同的模式,这不是一回事。查看此工具。

您不能更改给定对象的架构。你必须重新创造它

有几种方法可以做到这一点:

  • 如果只有一个表,则可以和/或该表。如果使用IDX格式,DDL将包含在生成的文件中。如果使用其他格式,则已创建该表
  • 您可以使用以下命令重新创建表:

    像schema1.mytable一样创建表schema2.mytable

  • 您可以使用该工具提取DDL

  • 如果要更改给定架构的架构名称,可以使用
最后两个选项仅创建表结构,您仍然需要导入数据。创建表后,可以通过不同的方式插入数据:

  • 直接插入

    插入schema2.mytable从schema1.mytable中选择*

  • 通过从游标加载

  • 通过加载或导入文件(上一步中导出的文件)
问题在于外交关系,因为它们必须重建


最后,您可以创建一个。这更容易,而且您不必处理关系。

如果您保持原样并使用新名称和模式创建别名,该怎么办。

重命名表意味着重命名同一模式中的表。要在其他模式中重命名,db2调用其别名:


db2 create alias for

您可以使用以下语句轻松重命名表:

RENAME TABLE SCHEMA.TABLENAME TO NEWTABLENAME;

您好,谢谢-我想可能有一个命令可以简单地将表移动到新的模式中,但是您从实际表在另一个模式中创建一个新表,然后插入的方法可以帮我完成这项工作。但是更麻烦,但这很好。还有一个
ADMIN\u MOVE\u TABLE
系统存储过程,它完全按照它所说的做,包括所有依赖项。@mustaccio我还认为ADMIN\u MOVE\u TABLE可以做到这一点,但是文档没有提供不同模式的选项:关于如何移动表的更多信息:愚蠢的我。我想收回我的评论,但为时已晚。不幸的是,这实际上并没有移动表,它只是创建了一个指向它的指针。这在某些情况下很有用,但在实际需要移动表时没有帮助。不幸的是,这实际上并没有移动表,它只是创建了一个指向表的指针。这在某些情况下很有用,但在实际需要移动表时没有帮助。此外,这与现有答案相同。