oracle 复制表结构与备注
时间: 2023-08-18 18:06:10 浏览: 291
要复制一个表的结构和备注,可以使用以下 SQL 语句:
```
CREATE TABLE new_table AS
SELECT * FROM old_table WHERE 1=0;
COMMENT ON TABLE new_table IS '备注信息';
BEGIN
FOR i IN (SELECT column_name, comments FROM user_col_comments WHERE table_name='OLD_TABLE')
LOOP
EXECUTE IMMEDIATE 'COMMENT ON COLUMN new_table.'||i.column_name||' IS '''||i.comments||'''';
END LOOP;
END;
```
其中,`new_table` 是新表的名称,`old_table` 是要复制的旧表的名称。`WHERE 1=0` 部分确保只复制表结构而不复制数据。
`COMMENT ON TABLE` 可以用来添加表级别的备注信息。
`user_col_comments` 是 Oracle 数据库中的一个系统表,它包含了表列的注释信息。通过循环遍历该表,可以获取每个列的注释信息,并使用 `COMMENT ON COLUMN` 添加到新表中。
请注意,在执行此 SQL 语句之前,请确保在数据库中具有足够的权限。
相关问题
oracle 快速复制数据量很大的分区表
Oracle快速复制数据量很大的分区表可以通过以下步骤完成:
1. 创建一个与原分区表结构相同的空表,例如:
```
CREATE TABLE new_table AS SELECT * FROM original_table WHERE 1=2;
```
2. 使用`DBMS_REDEFINITION`包中的`START_REDEF_TABLE`过程开始重定义表。例如:
```
BEGIN
DBMS_REDEFINITION.START_REDEF_TABLE('original_table', 'new_table', 'partition_key');
END;
```
其中,`partition_key`为分区键。
3. 使用`DBMS_REDEFINITION`包中的`COPY_TABLE_DEPENDENTS`过程复制约束、索引、触发器等相关对象。例如:
```
BEGIN
DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS('original_table', 'new_table', 1, TRUE, TRUE, TRUE, TRUE);
END;
```
其中,`1`表示并行度,`TRUE`表示复制相关对象。
4. 使用`DBMS_REDEFINITION`包中的`SYNC_INTERIM_TABLE`过程将原表数据同步到新表。例如:
```
BEGIN
DBMS_REDEFINITION.SYNC_INTERIM_TABLE('original_table', 'new_table');
END;
```
5. 使用`DBMS_REDEFINITION`包中的`FINISH_REDEF_TABLE`过程完成表重定义。例如:
```
BEGIN
DBMS_REDEFINITION.FINISH_REDEF_TABLE('original_table', 'new_table');
END;
```
备注:以上步骤仅适用于Oracle 11g及以上版本。在Oracle 10g及以下版本,可以使用`DBMS_REDEFINITION`包中的`START_REDEF_TABLE`和`CAN_REDEF_TABLE`过程来重定义表。
阅读全文