/* 首先要说的DBMS_METADATA.GET_DDL是个好函数呀!新项目不知道哪个缺心眼建的同构库,只是见了表结构,并没有健非主键外的索引,领导让追加一版,以前只是会用视图拼sql创建,今天有学会一招oracle-9i以上版本可以使用,导出的内容有点复杂需要用编辑器处理下并且替换一下实例名(schema),select TO_CHAR(DBMS_METADATA.GET_DDL('TABLE','T_LCPOL')) from dual; 第一个参数就是类型如index、table、function、等 第二个参数就是 typeName 出来的结果就是创建这个typeName的DDL语句了!注意大写,还有一点要注意的是务必是同一个实例(Sechema),不同所属会报错,如果是想要生成不同所属的内容需要添加第三个参数,可以添加第二个参数的Owner 例如select replace(to_char(DBMS_METADATA.GET_DDL('TABLE','DUAL','SYS')),'"','') from dual;  最下面有这个函数的具体实现*/
--以下例子是用来批量生成索引的语句,不合适的格式需文本编辑器修正下。
SELECT substr(replace(to_char(DBMS_METADATA.GET_DDL('INDEX', a.INDEX_NAME)),'"',''),0,instr(replace(to_char(DBMS_METADATA.GET_DDL('INDEX',a.INDEX_NAME)),'"',''),') ',1)) || ';' createindexsql
from dba_indexes a
WHERE a.TABLE_TYPE = 'TABLE'
and a.TABLE_OWNER = 'GIS'
and a.OWNER = 'GIS'
and NOT EXISTS (SELECT 'x'
FROM dba_constraints b
WHERE a.OWNER = b.OWNER
and a.INDEX_NAME = b.CONSTRAINT_NAME
and b.CONSTRAINT_TYPE = 'P') order by 1;
--单纯用视图拼接sql; 两者可一比较下哪个更适合
SELECT TABLE_OWNER,'Create index '||b.INDEX_NAME||' on '||
b.TABLE_OWNER||'.'||
b.TABLE_NAME||'('||
listagg(a.COLUMN_NAME, ',') within group(ORDER by a.TABLE_NAME)||');'
FROM user_ind_columns a, user_indexes b
WHERE a.INDEX_NAME = b.INDEX_NAME and
NOT EXISTS (SELECT 'x'
FROM user_constraints c WHERE
b.INDEX_NAME = c.CONSTRAINT_NAME
and c.CONSTRAINT_TYPE = 'P') --不包括主键
GROUP BY b.INDEX_NAME, b.TABLE_OWNER, b.TABLE_NAME ORDER BY 1;
--DBMS_METADATA.GET_DDL函数的具体实现
FUNCTION get_ddl (
object_type IN VARCHAR2,
name IN VARCHAR2,
schema IN VARCHAR2 DEFAULT NULL,
version IN VARCHAR2 DEFAULT 'COMPATIBLE',
model IN VARCHAR2 DEFAULT 'ORACLE',
transform IN VARCHAR2 DEFAULT 'DDL')
RETURN CLOB;

基于DBMS_METADATA.GET_DDL函数批量导出索引的创建语句的更多相关文章

  1. Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?

    Oracle中如何导出存储过程.函数.包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句? QQ群里有人问:如何导出一个用户下的存储过程?   麦苗答:方法有多种,可以使用DBMS_MET ...

  2. oracle中查询用户表/索引/视图创建语句

    不多说,直接上干货 1.查询当前用户下表的创建语句 select dbms_metadata.get_ddl('TABLE','ux_future') from dual; 2.查询其他用户下表的创建 ...

  3. Navicat批量导出mysql的DDL语句

    工作中有的时候需要将某个库中的表.视图.函数.存储过程等创建语句导出,又不需要表中的数据.同时最好放在同一个文件里面,这样方便拷贝. 方法一:需要拷贝的创建语句条数不多,不至于让你拷到头脑发晕的地步, ...

  4. 利用dbms_metadata.get_ddl查看DDL语句

    http://www.cnblogs.com/aocle/archive/2011/10/13/2209790.html 当我们想要查看某个表或者是表空间的DDL的时候,可以利用dbms_metada ...

  5. Oracle利用dbms_metadata.get_ddl查看DDL语句

    当我们想要查看某个表或者是表空间的DDL的时候,可以利用dbms_metadata.get_ddl这个包来查看. dbms_metadata包中的get_ddl函数详细参数 GET_DDL函数返回创建 ...

  6. Oracle中的dbms_metadata.get_ddl的用法

    当我们想要查看某个表或者是表空间的DDL的时候,可以利用dbms_metadata.get_ddl这个包来查看. dbms_metadata包中的get_ddl函数详细参数 GET_DDL函数返回创建 ...

  7. QQ空间相册照片批量导出

    QQ空间相册照片批量导出 先自己创建一个私人的单独的群,然后创建相册,上传照片来源从空间选图复制 复制完成后打开相册开始骚操作(两种方式) OK

  8. Windows Server 2016-查询并导出固定时间段创建AD用户

    生产环境中往往我们有各式各样的需求,例如快速查询某段时间创建用户,或批量导出固定时间段创建用户列表,具体操作如下: $date=Get-Date $oldday=(Get-Date).AddDays( ...

  9. sqlserver批量导出存储过程、函数、视图

    select text from syscomments s1 join sysobjects s2 on s1.id=s2.id  where xtype = 'V' xtype V   视图 P  ...

随机推荐

  1. BZOJ 4025 二分图 LCT维护最大生成树

    怎么说呢,我也不知道该咋讲,你就手画一下然后 yy 一下就发现这么做是对的. 为什么我明明都想出来了,却还是讲不出来啊~ #include <cstdio> #include <ve ...

  2. Java进阶知识25 Spring与Hibernate整合到一起

    1.概述 1.1.Spring与Hibernate整合关键点 1) Hibernate的SessionFactory对象交给Spring创建.    2) hibernate事务交给spring的声明 ...

  3. LibreOJ #6000. 「网络流 24 题」搭配飞行员

    二次联通门 : LibreOJ #6000. 「网络流 24 题」搭配飞行员 /* LibreOJ #6000. 「网络流 24 题」搭配飞行员 二分图最大匹配 Dinic最大流 + 当前弧优化 */ ...

  4. DP的优化

    参考资料: 李煜东<算法竞赛进阶指南> 斜率优化 形如: \(f[i] = min\{f[j]+val(i,j)\}\)的dp,多项式\(val(i,j)\)包含\(i,j\)的乘积项 引 ...

  5. [题解] [BZOJ4152] The Captain

    题面 题解 将所有点根据

  6. H5的pushState与replaceState的用法

    一.简介 HTML5引入了 history.pushState()和 history.replaceState()方法,它们分别可以添加和修改历史记录条目.这些方法通常与window.onpopsta ...

  7. ETL定义、四大模块及子系统说明

    ETL定义.四大模块及子系统说明 ——<Pentaho Kettle解决方案>读书笔记 罗小川 目前公司正在进行数据仓库的建设的前期需求整理和项目启动阶段,想简单来谈一下自己对目前公司在用 ...

  8. 谈谈Java对象的强引用,软引用,弱引用,虚引用分别是什么

    整体结构 java提供了4中引用类型,在垃圾回收的时候,都有自己的各自特点. 为什么要区分这么多引用呢,其实这和Java的GC有密切关系. 强引用(默认支持模式) 把一个对象赋给一个引用变量,这个引用 ...

  9. Flask 编写一个授权登录验证的模块(二)

    本篇比上一篇多了重定向的功能 #!/usr/bin/env python # -*- coding: utf-8 -*- #python3 import base64 import random im ...

  10. python 度分秒转度

    #必须是u类型==================u==================== by gisoracle def dmstod(dms): #arcpy.AddMessage(" ...