基于DBMS_METADATA.GET_DDL函数批量导出索引的创建语句
/* 首先要说的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函数批量导出索引的创建语句的更多相关文章
- Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?
Oracle中如何导出存储过程.函数.包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句? QQ群里有人问:如何导出一个用户下的存储过程? 麦苗答:方法有多种,可以使用DBMS_MET ...
- oracle中查询用户表/索引/视图创建语句
不多说,直接上干货 1.查询当前用户下表的创建语句 select dbms_metadata.get_ddl('TABLE','ux_future') from dual; 2.查询其他用户下表的创建 ...
- Navicat批量导出mysql的DDL语句
工作中有的时候需要将某个库中的表.视图.函数.存储过程等创建语句导出,又不需要表中的数据.同时最好放在同一个文件里面,这样方便拷贝. 方法一:需要拷贝的创建语句条数不多,不至于让你拷到头脑发晕的地步, ...
- 利用dbms_metadata.get_ddl查看DDL语句
http://www.cnblogs.com/aocle/archive/2011/10/13/2209790.html 当我们想要查看某个表或者是表空间的DDL的时候,可以利用dbms_metada ...
- Oracle利用dbms_metadata.get_ddl查看DDL语句
当我们想要查看某个表或者是表空间的DDL的时候,可以利用dbms_metadata.get_ddl这个包来查看. dbms_metadata包中的get_ddl函数详细参数 GET_DDL函数返回创建 ...
- Oracle中的dbms_metadata.get_ddl的用法
当我们想要查看某个表或者是表空间的DDL的时候,可以利用dbms_metadata.get_ddl这个包来查看. dbms_metadata包中的get_ddl函数详细参数 GET_DDL函数返回创建 ...
- QQ空间相册照片批量导出
QQ空间相册照片批量导出 先自己创建一个私人的单独的群,然后创建相册,上传照片来源从空间选图复制 复制完成后打开相册开始骚操作(两种方式) OK
- Windows Server 2016-查询并导出固定时间段创建AD用户
生产环境中往往我们有各式各样的需求,例如快速查询某段时间创建用户,或批量导出固定时间段创建用户列表,具体操作如下: $date=Get-Date $oldday=(Get-Date).AddDays( ...
- sqlserver批量导出存储过程、函数、视图
select text from syscomments s1 join sysobjects s2 on s1.id=s2.id where xtype = 'V' xtype V 视图 P ...
随机推荐
- fputcsv
1.a是從結尾添加,w是從頭添加,不知爲什麽 這樣寫最後一行會是錯的,似乎不會自動添加換行符,只有在最後以行寫上"\r\n",才會正確. $fp = sugar_fopen('fi ...
- CF1153E Serval and Snake【构造】
题目链接:洛谷 这道题是很久以前NTF跟我说的,现在想起来把它做了... 我们发现,如果蛇的两头都在矩形里或矩形外,则询问为偶数,否则为奇数. 所以我们询问每一行和每一列,就能知道蛇的两头的横纵坐标了 ...
- 爬虫之解析库BeautifulSoup
介绍 Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等 ...
- JAVA基础知识|小知识点
1.强烈建议,不使用char类型 那么,到底为什么java里不推荐使用char类型呢?其实,1个java的char字符并不完全等于一个unicode的字符.char采用的UCS-2编码,是一种淘汰的U ...
- err="etherbase address must be explicitly specified"
如果要初始化区块链的话就用创始区块 如果通过创世区块来初始化区块链的话,首先需要一个初始化区块链的json文件,如下. { "config": { "chainId& ...
- Truffle测试框架
Truffle测试框架 2018年06月08日 19:01:19 tianlongtc 阅读数 1000 Truffle 有一个标准的自动化测试框架,让你可以非常方便地测试您的合约.这个框架允许您 ...
- DELPHI10.3.1安卓照相
DELPHI10.3.1安卓照相 解决方法:
- react native Expo适配全面屏/Expo识别全面屏和正常屏
一.最新版本的expo已经默认支持了全面屏,即不会像react native cli一样出现底部黑边 二.但是全面屏通过Dimensions.get('window')获取的高度还是不准确,因为全面屏 ...
- 013-java中的IO操作-InputStream/Reader、OutputStream/Writer
一.概述 IO流用来处理设备之间的数据传输,上传文件和下载文件,Java对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称 ...
- Java面试题(基础)
一.Java 基础 1.JDK 和 JRE 有什么区别? 答:JRE是java运行时环境,包含了java虚拟机,java基础类库.是使用java语言编写的程序运行所需要的软件环境,是提供给想运行jav ...