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

7uzetpgm  于 2022-11-07  发布在  DB2
关注(0)|答案(6)|浏览(319)

我尝试将db2中的表重命名为

rename table schema1.mytable to schema2.mytable

但收到以下错误消息:

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

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

scyqe7ek

scyqe7ek1#

不能更改给定对象的架构。必须重新创建它。
有几种方法可以做到这一点:

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

insert into schema2.mytable select * from schema1.mytable

最后两个选项只会建立表格结构,您仍然需要汇入数据。建立表格之后,您可以使用不同的方式插入数据:

  • 直接插入

insert into schema2.mytable select * from schema1.mytable

  • 通过从光标加载
  • 通过加载或从文件导入(在上一步中导出的文件)

问题是对外关系,因为它们必须重新建立。
最后,您可以创建一个alias。这更容易,而且您不必处理关系。

cunj1qz1

cunj1qz12#

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

RENAME TABLE SCHEMA.TABLENAME TO NEWTABLENAME;
3okqufwl

3okqufwl3#

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

rsl1atfo

rsl1atfo4#

如果要重命名同一架构中的表,可以像这样使用。

RENAME TABLE schema.table_name TO "new_table_name";

否则,您可以使用DBeaver之类的工具重命名或复制db2 db中的表。

d7v8vwbk

d7v8vwbk5#

如果您保持原样并使用新名称和模式创建一个别名,会怎么样?

lyfkaqu1

lyfkaqu16#

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

相关问题