欢迎光临本地信息咨询网
详情描述

1. 使用 CREATE TABLE AS SELECT (CTAS)

最常用的表复制方法,复制表结构和数据:

-- 复制表结构和所有数据
CREATE TABLE new_table AS SELECT * FROM original_table;

-- 复制表结构并筛选数据
CREATE TABLE new_table AS 
SELECT * FROM original_table WHERE condition;

-- 复制部分列
CREATE TABLE new_table AS 
SELECT col1, col2, col3 FROM original_table;

-- 复制空表(仅结构)
CREATE TABLE new_table AS 
SELECT * FROM original_table WHERE 1=0;

2. 通过工具界面复制

使用 SQL Developer 图形界面:

在左侧连接窗口中右键点击源表 选择 "复制" → "复制到..." 选择目标连接和方案 可以选择:
  • 仅结构
  • 结构和数据
  • 仅数据(目标表需已存在)
点击 "应用" 完成复制

3. 导出/导入方法

使用导出工具:

右键表 → 导出 选择导出格式(SQL、CSV、Excel等) 设置导出选项 在目标数据库执行导出的 SQL 文件

快速导出数据:

-- 生成插入语句
SELECT 'INSERT INTO new_table VALUES (' 
       || col1 || ', ' || col2 || ', ...' || ');'
FROM original_table;

4. 复制到不同用户/方案

-- 复制到其他用户的方案
CREATE TABLE other_user.new_table AS 
SELECT * FROM current_user.original_table;

-- 需要相应权限
GRANT SELECT ON original_table TO other_user;

5. 高级复制选项

-- 复制表结构包括约束、索引等
BEGIN
  DBMS_METADATA.SET_TRANSFORM_PARAM(
    DBMS_METADATA.SESSION_TRANSFORM,
    'SQLTERMINATOR', TRUE);

  SELECT DBMS_METADATA.GET_DDL('TABLE', 'ORIGINAL_TABLE')
  INTO :ddl FROM DUAL;

  EXECUTE IMMEDIATE :ddl;
END;
/

-- 使用 DBMS_REDEFINITION 在线重定义(大型表)
BEGIN
  DBMS_REDEFINITION.CAN_REDEF_TABLE('USER', 'ORIGINAL_TABLE');
  DBMS_REDEFINITION.START_REDEF_TABLE(
    uname => 'USER',
    orig_table => 'ORIGINAL_TABLE',
    int_table => 'INTERIM_TABLE');
  DBMS_REDEFINITION.FINISH_REDEF_TABLE(
    uname => 'USER',
    orig_table => 'ORIGINAL_TABLE',
    int_table => 'INTERIM_TABLE');
END;
/

6. INSERT INTO SELECT 复制数据

-- 前提:目标表已存在
INSERT INTO target_table 
SELECT * FROM source_table;

-- 指定列插入
INSERT INTO target_table (col1, col2, col3)
SELECT col1, col2, col3 FROM source_table;

7. 复制包括约束和索引

-- 1. 复制结构
CREATE TABLE new_table AS 
SELECT * FROM original_table WHERE 1=0;

-- 2. 手动添加约束
ALTER TABLE new_table ADD CONSTRAINT pk_new PRIMARY KEY (id);
ALTER TABLE new_table ADD CONSTRAINT fk_new FOREIGN KEY (ref_id) 
  REFERENCES other_table(id);

-- 3. 复制索引
CREATE INDEX idx_new_col ON new_table(column_name);

8. 使用 SQL Developer 的数据库复制功能

工具 → 数据库复制 选择源连接和目标连接 选择要复制的对象类型 配置复制选项 执行复制

实用技巧和注意事项

性能优化:

-- 禁用约束和索引提高插入速度
ALTER TABLE new_table DISABLE CONSTRAINT constraint_name;
ALTER INDEX index_name UNUSABLE;

-- 使用并行和NOLOGGING(生产环境慎用)
CREATE TABLE new_table NOLOGGING PARALLEL 4 AS 
SELECT /*+ PARALLEL(4) */ * FROM original_table;

-- 分批次插入大表
INSERT /*+ APPEND */ INTO new_table 
SELECT * FROM original_table WHERE ROWNUM <= 10000;

查看表空间使用情况:

-- 复制前确认表空间
SELECT tablespace_name, bytes/1024/1024 MB 
FROM user_segments 
WHERE segment_name = 'ORIGINAL_TABLE';

验证数据一致性:

-- 检查行数
SELECT COUNT(*) FROM original_table;
SELECT COUNT(*) FROM new_table;

-- 数据对比
SELECT '差异数据' AS remark, a.*
FROM (
  SELECT * FROM original_table
  MINUS
  SELECT * FROM new_table
) a;

选择建议:

  • 小表快速复制:使用 CTAS 方法
  • 复制到不同数据库:使用导出/导入工具
  • 保留完整对象结构:使用 DBMS_METADATA
  • 在线操作生产表:使用 DBMS_REDEFINITION
  • 图形化操作:使用 SQL Developer 界面工具

根据你的具体需求(是否需要数据、是否需要约束索引、表的大小等)选择合适的方法。

相关帖子
农业飞手在作业前后,需要对无人机及其任务设备进行哪些标准检查?
农业飞手在作业前后,需要对无人机及其任务设备进行哪些标准检查?
非全日制用工或兼职,单位需要为其缴纳社保吗?门槛在哪?
非全日制用工或兼职,单位需要为其缴纳社保吗?门槛在哪?
2026年,退休人员的基本医保个人账户划入标准会有新的变化吗?
2026年,退休人员的基本医保个人账户划入标准会有新的变化吗?
未来共享用工的规范化发展,是否会催生出新的劳动合同文本或标准?
未来共享用工的规范化发展,是否会催生出新的劳动合同文本或标准?
阜阳市商城网站制作设计%短视频推广,高端网站开发设计
阜阳市商城网站制作设计%短视频推广,高端网站开发设计
阜阳市120长途救护车收费一般多少钱&救护车租车护送病人转院
阜阳市120长途救护车收费一般多少钱&救护车租车护送病人转院
马上消费金融利率,安逸花借款利息计算
马上消费金融利率,安逸花借款利息计算
在涉及遗产继承或抚养权纠纷时,出生医学证明能提供怎样的法律依据?
在涉及遗产继承或抚养权纠纷时,出生医学证明能提供怎样的法律依据?
智能玩具联网功能背后的数据安全与儿童隐私保护,家长应了解哪些知识?
智能玩具联网功能背后的数据安全与儿童隐私保护,家长应了解哪些知识?
个人债务优化重组申请流程有哪些步骤?从申请到落地全解析
个人债务优化重组申请流程有哪些步骤?从申请到落地全解析
更年期后,女性在职业生涯和个人兴趣发展上可能迎来哪些新机遇?
更年期后,女性在职业生涯和个人兴趣发展上可能迎来哪些新机遇?
汽车贷款期限包含宽限期吗?还款日与期限的计算
汽车贷款期限包含宽限期吗?还款日与期限的计算
除了便捷性,预制菜在执行的食品安全标准上与餐厅现做菜有何异同?
除了便捷性,预制菜在执行的食品安全标准上与餐厅现做菜有何异同?
写字楼门店抵押贷款负债率高怎么办?降低负债率提高批贷成功率
写字楼门店抵押贷款负债率高怎么办?降低负债率提高批贷成功率
商铺门面房抵押贷款保险必须买吗?财产保险与抵押贷款保险区别
商铺门面房抵押贷款保险必须买吗?财产保险与抵押贷款保险区别
面对2026年的市场环境,独立开发者应聚焦解决用户的哪些痛点?
面对2026年的市场环境,独立开发者应聚焦解决用户的哪些痛点?
别墅抵押贷款LPR怎么影响利率?LPR调整与月供变化关系解读
别墅抵押贷款LPR怎么影响利率?LPR调整与月供变化关系解读
如何通过角色扮演类玩具,有效培养孩子的同理心与情绪管理能力?
如何通过角色扮演类玩具,有效培养孩子的同理心与情绪管理能力?
过桥垫资让与担保效力?名为买卖实为借贷
过桥垫资让与担保效力?名为买卖实为借贷
别墅抵押贷款可以抵押给典当行吗?典当行别墅抵押贷款利弊
别墅抵押贷款可以抵押给典当行吗?典当行别墅抵押贷款利弊
公司经营贷款集团授信流程,企业集团统一授信
公司经营贷款集团授信流程,企业集团统一授信