Oracle命令行如何复制表及数据?

Oracle命令行中通过SQL语句(如CREATE TABLE…AS SELECT或INSERT…SELECT)实现表结构或数据复制,需注意权限、约束及数据类型兼容性。

复制表结构(不含数据)

场景:仅复制源表结构,不复制数据。
命令:

CREATE TABLE 新表名 AS SELECT * FROM 源表名 WHERE 1=0;

示例:

CREATE TABLE employees_copy AS SELECT * FROM employees WHERE 1=0;

说明:
WHERE 1=0 确保条件永远为假,故只复制结构,不复制数据。


复制表结构及全部数据

场景:完整复制表结构和所有数据。
命令:

CREATE TABLE 新表名 AS SELECT * FROM 源表名;

示例:

CREATE TABLE employees_full_copy AS SELECT * FROM employees;

复制表的部分数据

场景:复制表结构及符合条件的数据。
命令:

CREATE TABLE 新表名 AS SELECT * FROM 源表名 WHERE 条件;

示例(复制部门ID为10的员工):

CREATE TABLE dept10_employees AS SELECT * FROM employees WHERE department_id = 10;

复制表结构(包含索引、约束等)

需分两步操作:

  1. 仅复制结构:
    CREATE TABLE 新表名 AS SELECT * FROM 源表名 WHERE 1=0;
  2. 手动复制索引/约束:
    通过DBMS_METADATA生成源表的DDL语句(需在SQL*Plus中执行):

    SET LONG 1000000
    SELECT DBMS_METADATA.GET_DDL('TABLE', '源表名') FROM DUAL;

    修改输出结果中的表名后执行,重建索引和约束。


跨用户/跨数据库复制

场景:从用户A的表复制到用户B的表。
步骤:

  1. 在目标用户下执行:
    CREATE TABLE 新表名 AS SELECT * FROM 源用户.源表名;
  2. 若需跨数据库,先用数据库链接(DBLINK):
    CREATE DATABASE LINK dblink_name CONNECT TO 用户名 IDENTIFIED BY 密码 USING '远程服务名';
    CREATE TABLE 本地表名 AS SELECT * FROM 表名@dblink_name;

注意事项

  1. 权限要求:
    • 执行CREATE TABLE需要CREATE TABLE权限。
    • 访问其他用户的表需SELECT ANY TABLE或显式授权。
  2. 不复制的内容:
    • 自动生成的CTAS操作不包含索引、约束、注释、触发器等,需手动重建。
  3. 性能优化:
    • 大表复制时启用并行(需Oracle企业版):
      CREATE TABLE 新表名 PARALLEL 4 AS SELECT * FROM 源表名;
    • 使用NOLOGGING减少日志(谨慎操作):
      CREATE TABLE 新表名 NOLOGGING AS SELECT * FROM 源表名;
  4. 存储管理:

    新表默认使用当前用户的默认表空间,需确保表空间充足。


验证复制结果

-- 检查行数
SELECT COUNT(*) FROM 新表名; 
-- 对比数据
SELECT * FROM 新表名 MINUS SELECT * FROM 源表名;  -- 应返回0行

引用说明

本文参考Oracle官方文档:

  • CREATE TABLE AS SELECT (CTAS)
  • DBMS_METADATA使用指南
    操作前请确保符合数据库安全规范,生产环境建议备份数据。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9278.html

赞 (0)
酷番叔酷番叔
上一篇 2025年7月30日 13:18
下一篇 2025年7月30日 13:33

相关推荐

  • 如何正确使用安全众测使用中心?

    构建企业安全防线的重要枢纽在数字化浪潮席卷全球的今天,企业面临的安全威胁日益复杂,从数据泄露到系统漏洞,网络攻击手段不断升级,传统的安全防护模式往往难以主动发现潜在风险,而“安全众测使用中心”作为连接企业与安全专家的桥梁,通过汇聚全球白帽黑客的智慧,为企业提供全方位、高效率的漏洞挖掘服务,成为主动防御体系中的关……

    2025年11月19日
    21100
  • 安全信誉防护联盟计划如何筑牢安全信誉屏障?

    安全信誉防护联盟计划的诞生随着数字化转型的深入,网络攻击、数据泄露、钓鱼欺诈等安全威胁日益复杂化,企业个体在防护能力、资源投入和风险应对上往往面临“单打独斗”的困境,据《2023年全球网络安全态势报告》显示,超过60%的中小企业因缺乏协同防护机制,在遭遇安全事件后难以快速响应,导致经济损失和信誉双重受损,在此背……

    2025年11月15日
    22700
  • 网站建设价钱是多少?创建设备怎么收费

    网站建设成本与设备选型的核心原则网站建设的价钱(成本)与设备(基础设施)的合理规划,直接决定了项目成败与长期运营效率,企业常陷入两个误区:要么过度压缩初期投入,选用低配设备导致性能瓶颈,最终频繁升级反而增加总成本;要么盲目堆砌高配硬件,造成资源闲置与资金浪费,真正专业的做法是:基于业务场景预测,选择弹性可扩展的……

    2026年8月25日
    6600
  • 命令窗口怎么调全屏?Windows系统全屏操作方法

    命令窗口是Windows操作系统中非常基础且实用的工具,无论是系统管理员、开发者还是普通用户,都可能通过它执行命令行操作,比如文件管理、系统配置、程序调试等,在使用命令窗口时,为了获得更清晰的输出界面或避免窗口遮挡,全屏显示是一个常见需求,本文将详细介绍多种将命令窗口调至全屏的方法,涵盖不同Windows版本和……

    2025年8月27日
    37300
  • Linux操作系统密码更改方法详解?

    在终端输入passwd命令,按提示输入新密码并确认即可完成修改。

    2026年3月3日
    23700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信