【达梦数据库(Oracle模式)】如何将视图中的数据导出

在某些情况下,我们需要将生产环境某个模式下的数据导入到开发电脑中,因为正式环境无法连接外网数据。

方式一:将视图查询出来,然后右键导出所有查询结果(不推荐)

优点:方便快捷

缺点:视图如果很多的话,时间耗费就很久了

方式二:新建一个模式,将视图存到新模式的表中导出(推荐)

使用存储模式实现将视图存到另一个模式下

sql 复制代码
DECLARE
  -- 游标用于获取所有视图的名称
  CURSOR view_cursor IS
    SELECT VIEW_NAME
    FROM ALL_VIEWS
    WHERE OWNER = 'OLD_MODEL'; -- 获取 INDEX_SYSTEM 模式下的所有视图
  
  -- 用于存储视图名的变量
  view_name VARCHAR2(255);
  sql_create_table VARCHAR2(4096);
  sql_insert_data VARCHAR2(4096);
BEGIN
  -- 遍历所有视图
  FOR rec IN view_cursor LOOP
    view_name := rec.VIEW_NAME;
    
    -- 构造创建表的SQL语句
    sql_create_table := 'CREATE TABLE NEW_MODEL.' || view_name || ' AS SELECT * FROM OLD_MODEL.' || view_name;
    
    -- 执行创建表的SQL语句
    EXECUTE IMMEDIATE sql_create_table;
    
    -- 构造插入数据的SQL语句
    sql_insert_data := 'INSERT INTO NEW_MODEL.' || view_name || ' SELECT * FROM OLD_MODEL.' || view_name;
    
    -- 执行插入数据的SQL语句
    EXECUTE IMMEDIATE sql_insert_data;
    
    DBMS_OUTPUT.PUT_LINE('视图 ' || view_name || ' 已成功转存到 NEW_MODEL.');
  END LOOP;
END;
/

然后使用数据迁移工具将NEW_MODEL中的数据导出即可

相关推荐
李白客1 小时前
AI 数据库落地 NL2SQL:准确率卡在四成,问题在表注释不在模型
数据库
FluxDB1 小时前
FluxDB vs DBX vs DBeaver:GPUI、Tauri、Eclipse 三种技术栈实测
数据库·mysql
杨航 AI1 小时前
JEV的用法
java·前端·数据库
数据库小学妹2 小时前
MySQL分页结果不稳定:唯一键兜底与游标分页
数据库·mysql·dba
风翼靓崽2 小时前
mysql数据备份/恢复
数据库·mysql
木棉软糖2 小时前
5 步确认 TiDB 历史抽数的 Logstash 有没有真的写进 ES
elasticsearch·oracle·tidb
贝锐3 小时前
金仓、达梦、TDSQL全适配:向日葵补齐信创数据库层远程运维能力
运维·数据库·信创
xixiaoyunya3 小时前
Redis缓存三大问题实战:穿透、击穿、雪崩,我用一个电商秒杀场景讲清楚
数据库·redis·缓存
这个DBA有点耶4 小时前
Merge还是Materialize?一文讲透MySQL 8.0 CTE底层的执行计划博弈与性能陷阱
数据库·mysql·架构
Thanks_ks5 小时前
MySQL 的 REPEATABLE READ 到底能不能防幻读——从快照读、当前读到 Next-Key Lock
数据库·mysql·innodb·mvcc·锁机制·事务隔离级别·间隙锁