我想在DB2中重命名表像这样如何在sql db2中重命名表?
rename table schema1.mytable to schema2.mytable
但得到以下错误消息:
the name "mytable" has the wrong number of qualifiers.. SQLCODE=-108,SQLSTATE=42601
什么是这里的问题....我使用从确切的语法IBM publib文档。
我想在DB2中重命名表像这样如何在sql db2中重命名表?
rename table schema1.mytable to schema2.mytable
但得到以下错误消息:
the name "mytable" has the wrong number of qualifiers.. SQLCODE=-108,SQLSTATE=42601
什么是这里的问题....我使用从确切的语法IBM publib文档。
您无法更改给定对象的模式。你必须重新创建它。
有severals的方式做到这一点:
您可以通过重新创建表:
Create table schema2.mytable like schema1.mytable
你可以用db2look工具提取DDL
最后两个选项只创建表结构,您仍然需要导入数据。其创建表后,可以通过不同的方式插入数据:
直接从光标
insert into schema2.mytable select * from schema1.mytable
通过负载通过从文件加载或进口(该文件在上一步输出)
问题是forei gn关系,因为它们必须被重新创建。您可以创建一个alias。这很容易,你不必处理关系。
您不是在提供的示例中重命名表,而是尝试移动到不同的模式,它不是同一件事。查看db2move工具。
如果您保持原样并使用新名称和模式创建别名,该怎么办?
不幸的是,这实际上并没有移动表格,它只是创建一个指向它的指针。这种_can_在某些情况下很有用,但在表需要移动时无助。 –
重命名表意味着重命名同一模式中的表。要重命名的其他模式,DB2调用它的别名:
DB2为
不幸的是,这并没有实际移动表格,它只是创建一个指向它的指针。这在某些情况下可能很有用,但在实际需要移动表时不会起作用。此外,这与现有答案相同。 –
宾果!你是对的 :) – Tom123456
创建别名可以轻松地与这一说法重命名表:
RENAME TABLE SCHEMA.TABLENAME TO NEWTABLENAME;
您好感谢 - 想可能有一个命令来简单地将表移动到新的模式中,但是从实际表中在另一个模式中创建新表的方式,然后插入为我完成这项工作。但更麻烦,但没关系。 – brucezepplin
还有一个'ADMIN_MOVE_TABLE'系统存储过程完全按照它的说法进行,包括所有的依赖关系。 – mustaccio
@mustaccio我也认为ADMIN_MOVE_TABLE可以做到这一点,但文档没有选项来提供不同的模式:http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2 .luw.sql.rtn.doc/doc/r0055069.html – AngocA