`
toknowme
  • 浏览: 139895 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JAVA自动化生成Oracle建表,索引,SEQ

 
阅读更多

做项目的时候,很多时候需要将数据模型中建表脚本,主键,索引,SEQ,配置化数据保存成脚本(导出DMP也可以),这个时候就可以通过DBMS_METADATA.GET_DDL这个函数实现。

JAVA实现:
(1)建立数据库连接
(2)执行查询
(3)建立多个写的文件流(TABLE,SEQUENCE,INDEX)
(4)写入文件
(5)关闭连接

 

url=jdbc:oracle:thin:@192.168.1.2:1521:orcl
username=zz
password=zz
tables_file=tables.sql
sequences_file=sequences.sql
indexs_file=indexs.sql
sql=SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, U.object_name), U.OBJECT_TYPE \
FROM USER_OBJECTS U \
where U.OBJECT_TYPE = 'TABLE' \
or U.OBJECT_TYPE = 'INDEX' \
or U.OBJECT_TYPE = 'SEQUENCE' \
order by U.OBJECT_TYPE desc

 

 

package com.message.export;

import java.io.FileInputStream;
import java.io.FileWriter;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

public class Main {
	
	private static String SQL = "SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, U.object_name), U.OBJECT_TYPE "
			+ "FROM USER_OBJECTS U "
			+ "where U.OBJECT_TYPE = 'TABLE' "
			+ "or U.OBJECT_TYPE = 'VIEW' "
			+ "or U.OBJECT_TYPE = 'INDEX' "
			+ "or U.OBJECT_TYPE = 'PROCEDURE' "
			+ "or U.OBJECT_TYPE = 'SEQUENCE' "
			+ "or U.OBJECT_TYPE = 'TRIGGER' " + "order by U.OBJECT_TYPE desc";

	private static String URL = "jdbc:oracle:thin:@192.168.1.2:1521:orcl";
	private static String USERNAME = "abc";
	private static String PASSWORD = "abc";
	
	private static String TABLES_FILE = "tables.sql";
	private static String SEQUENCES_FILE = "sequences.sql";
	private static String INDEXS_FILE = "indexs.sql";

	public static void main(String[] args) throws Exception {
		Properties properties = new Properties();
		properties.load(new FileInputStream("src/config.properties"));
		URL = properties.getProperty("url", URL);
		USERNAME = properties.getProperty("username", USERNAME);
		PASSWORD = properties.getProperty("password", PASSWORD);
		
		TABLES_FILE = properties.getProperty("tables_file", TABLES_FILE);
		SEQUENCES_FILE = properties.getProperty("sequences_file", SEQUENCES_FILE);
		INDEXS_FILE = properties.getProperty("indexs_file", INDEXS_FILE);
		
		SQL = properties.getProperty("sql", SQL);
		
		FileWriter fwT = new FileWriter(TABLES_FILE);
		FileWriter fwS = new FileWriter(SEQUENCES_FILE);
		FileWriter fwI = new FileWriter(INDEXS_FILE);
		
		Class.forName("oracle.jdbc.driver.OracleDriver");
		Connection con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
		Statement statement = con.createStatement();
		ResultSet rs = statement.executeQuery(SQL);
		
		while (rs.next()) {
			Clob ddl = rs.getClob(1);
			String objectName = rs.getString(2);
			
			String ddlStr = ddl.getSubString(1L, (int) ddl.length());
			if ("TABLE".equals(objectName)) {
				fwT.write(ddlStr);
			}
			if ("SEQUENCE".equals(objectName)) {
				fwS.write(ddlStr);
			}
			if ("INDEX".equals(objectName)) {
				fwI.write(ddlStr);
			}
		}
		
		fwT.flush();
		fwS.flush();
		fwI.flush();
		
		fwT.close();
		fwS.close();
		fwI.close();
		
		rs.close();
		statement.close();
		con.close();
	}
	
}

 

0
0
分享到:
评论

相关推荐

    Oracle_基本建表语句

    Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的功能来创建、管理及操作各种数据库对象,如表、索引、视图等。本文将详细介绍Oracle的基本建表语句及相关操作。 首先,创建用户是数据库管理的基础...

    oracle建表总结.docx

    在Oracle中,创建的表、列、索引等对象的名称有以下规定: 1. 名称必须由字母开始,长度限制在130个字符以内。 2. 只能包含AZ、az、09、_(下划线)、$和#,但推荐避免使用$和#。 3. 同一Oracle服务器用户下的对象名不...

    oracle自带建表命令

    "Oracle自带建表命令"指的是Oracle数据库系统内建的SQL语句,用于创建数据表。当你使用Oracle精简版或者初次安装Oracle数据库时,可能需要手动创建数据库表来存储各种业务数据。以下是一些关于Oracle建表命令的关键...

    Oracle基本建表语句

    ### Oracle基本建表语句知识点总结 #### 一、创建用户 在Oracle数据库中,创建用户是基础操作之一。这通常用于控制不同开发者或应用程序之间的访问权限。 **语法:** ```sql CREATE USER <username> IDENTIFIED BY...

    Oracle_基本建表语句.doc

    本文将详细解析Oracle的基本建表语句以及相关的数据库操作。 首先,创建用户是数据库管理的第一步。以下是一个创建用户`han`的示例: ```sql CREATE USER han IDENTIFIED BY han DEFAULT TABLESPACE users ...

    中文歌词生成, Pytorch, Seq2Seq, Luong注意力, 按不同歌手风格生成歌词

    中文歌词生成, Pytorch, Seq2Seq, Luong注意力, 按不同歌手风格生成歌词 基于Pytorch、Seq2Seq、Luong注意力机制的 中文歌词生成研究, 按不同歌手风格生成歌词 训练数据集来自我收集整理的中文歌词数据库: ...

    Oracle常用重复建表,索引,序列,表列等通用方法封装

    通过这种方式,我们能够将数据库的日常维护工作标准化和自动化,降低出错率,提高工作效率。此外,这种方式也方便团队成员共享和理解数据库结构的创建和修改逻辑,使得数据库设计更加规范和易于维护。 总结起来,...

    Oracle 基本建表语句集

    ### Oracle基本建表语句集知识点详解 #### 创建用户 - **语法**: ```sql CREATE USER <用户名> IDENTIFIED BY <密码> DEFAULT TABLESPACE <表空间名> TEMPORARY TABLESPACE <临时表空间名>; GRANT <角色>,<角色...

    Oracle Form自动生成序号

    ### Oracle Form 自动生成序号 #### 知识点概述 在Oracle Forms中,有时我们需要处理复杂的业务数据,例如处理带有父子结构的数据集时,通常需要在表单中自动生成唯一的序号,以确保每一行记录的独特性和有序性。...

    oracle创建表,索引,表空间,触发器,schema用户,序列的Sql文

    6. **创建序列**:序列是Oracle中的一个特殊对象,用于生成唯一的整数序列号。例如: ```sql CREATE SEQUENCE seq_employee_id START WITH 1 INCREMENT BY 1; ``` 这个序列名为seq_employee_id,起始值为1,...

    Python-使用最新版本的tensorflow实现seq2seq模型生成文本数据摘要

    Seq2Seq模型在理解和生成文本数据时表现优秀,因为它能够捕捉输入序列到输出序列之间的依赖关系。 Seq2Seq模型通常由两个主要部分组成:编码器(Encoder)和解码器(Decoder)。编码器负责读取输入序列并将其转化为...

    使用seq2seq生成对联的数据集

    在自然语言处理(NLP)领域,序列到序列(Seq2Seq)模型是一种广泛应用的架构,主要用于解决诸如机器翻译、对话系统和文本生成等问题。在这个特定的案例中,我们关注的是利用Seq2Seq模型生成对联,这是一种独特的...

    mysql生成oracle序列

    ### MySQL生成Oracle序列知识点 #### 一、背景与概述 在数据库领域中,不同数据库管理系统(DBMS)之间存在显著差异,比如Oracle与MySQL在处理序列(sequence)的方式上就有本质的不同。Oracle提供了内置的支持来管理...

    java生成数据库表序列号

    在Java编程中,生成数据库表序列号通常涉及到数据库序列(Sequence)的概念,这是数据库系统用于自动为表生成唯一标识符的一种机制。Oracle、PostgreSQL等数据库支持序列,而MySQL等数据库可能通过自增主键来实现...

    快速Java和Oracle集成SSH开发注意问题.pdf

    ### 快速Java和Oracle集成SSH开发注意问题 #### Oracle基本操作 **1. 登录** - 使用ORACLE系统自带管理员(SYSTEM)用户登录,权限设置为DBA(拥有广泛的权限)。通常,在进行数据库管理操作时,推荐使用具有...

    seq2seq模型和基于注意力机制的seq2seq模型

    **seq2seq模型** seq2seq(Sequence to Sequence)模型是一种深度学习框架,主要用于处理序列到序列的问题,如机器翻译、语音识别、文本摘要等。该模型由两部分组成:编码器(Encoder)和解码器(Decoder)。编码器...

    ORACLE生成所有表对应的序列

    在Oracle数据库中,序列(Sequences)是一种自动递增或递减的数字生成器,常用于为表的主键字段生成唯一的标识符。在大型数据库系统中,它们是管理序列化和唯一性的重要工具。本篇文章将深入探讨如何在Oracle中生成...

    java使用oracle数据库

    在Java编程中,与Oracle数据库的交互是常见的需求。Oracle是一种功能强大的关系型数据库管理系统,广泛应用于企业级应用。要让Java程序连接并操作Oracle数据库,你需要了解以下几个关键知识点: 1. **创建Oracle...

    oracle 的基本建表语句

    Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的SQL语法用于数据操作和管理。在这个话题中,我们将探讨如何在Oracle中创建用户、管理表以及进行一些基本的表操作,包括添加和删除字段,以及处理...

Global site tag (gtag.js) - Google Analytics