package com.bbkj;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet; /**
* Created by Administrator on 2016/12/7.
*/
public class DbUtils { public static void main(String [] args){
testOracle();
}
/**
*
*/
public static void testOracle()
{
Connection con = null;// 创建一个数据库连接
PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
ResultSet result = null;// 创建一个结果集对象
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
System.out.println("开始尝试连接数据库!");
String url = "jdbc:oracle:thin:@10.248.2.111:1521:orcl";// 127.0.0.1是本机地址,XE是精简版Oracle的默认数据库名
String user = "etrackchb";// 用户名,系统默认的账户名
String password = "etrackchb";// 你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);// 获取连接
String sql = "select * from user_tables";// 预编译语句,“?”代表参数
pre = con.prepareStatement(sql);// 实例化预编译语句
//pre.setString(1, "");// 设置参数,前面的1表示参数的索引,而不是表中列名的索引
result = pre.executeQuery();// 执行查询,注意括号中不需要再加参数
FileOutputStream fos = new FileOutputStream("E:\\oracle.txt",false);
//fos.write(rs.getInt(1));
PrintStream p = new PrintStream(fos);
//System.out
Set<String> fileds =new HashSet<String>();
int j=0;
while (result.next()) {
StringBuilder sb =new StringBuilder();
sb.append(result.getString("table_name")).append("\n");
sb.append("CREATE TABLE IF NOT EXIST ")
.append(result.getString("table_name"))
.append(" ").append("\n");
String subsql = "select * from user_tab_columns where table_name = '" + result.getString("table_name") + "'";
PreparedStatement subpre =con.prepareStatement(subsql);
ResultSet subresult = subpre.executeQuery();
int i=0;
while (subresult.next()) {
if(i>0){
sb.append(",").append("\n");
}else{
sb.append("(").append("\n");
}
sb.append(" ").append(subresult.getString("COLUMN_NAME"))
.append(" ").append(
(Ddl.orcleData2HiveData(subresult.getString("DATA_TYPE")))).append("(")
.append(subresult.getString("DATA_LENGTH")).append(")"); // sb.append(" ").append(subresult.getString("COLUMN_NAME"))
// .append(" (").append(
// ( subresult.getString("DATA_TYPE")) ).append(")");
// fileds.add(subresult.getString("DATA_TYPE"));
System.out.println(subresult.getString("COLUMN_NAME") + "(" + subresult.getString("DATA_TYPE") + ")");
i++;
}
if(i>0){
sb.append(")").append("\n");
}
sb.append(";").append("\n").append("\n");
p.print(sb.toString());
}
p.close();
fos.flush();
System.out.print(fileds);
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
// 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
// 注意关闭的顺序,最后使用的最先关闭
if (result != null)
result.close();
if (pre != null)
pre.close();
if (con != null)
con.close();
System.out.println("数据库连接已关闭!");
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}

//取得该用户下所有的表
select * from user_tables;
//取得表名为Sysuser的注释信息
select * from user_tab_comments where table_name = 'SYSUSER';
//取得该用户下表名为Sysuser表的结构
select * from user_tab_columns where table_name='SYSUSER';
//取得该用户下表名为sysuser表中字段的注释信息
select * from user_col_comments where table_name = 'SYSUSER';
//取得该用户下所有表的中文名称和英文名称
select t2.table_name,t2.comments from user_tables t1,user_tab_comments t2 where t1.table_name=t2.table_name;
TABLE_NAME COMMENTS
------------------------------ -----------------------------------------------
SYSUSER 用户表
//取得表sysuser中的英文字段名,中文字段名,字段类型,字段长度
select t1.TABLE_NAME,t1.COLUMN_NAME,t2.COMMENTS,t1.DATA_TYPE,t1.DATA_LENGTH from user_tab_columns t1, user_col_comments t2 where t1.TABLE_NAME='SYSUSER' and t1.TABLE_NAME=t2.TABLE_NAME and t1.COLUMN_NAME=t2.COLUMN_NAME;
TABLE_NAME COLUMN_NAME COMMENTS DATA_TYPE DATA_LENGTH
----------- ----------------------------------------------------------------------
SYSUSER SYSUSERID 用户ID VARCHAR2 50
SYSUSER SYSUSERNAME 用户名 VARCHAR2 50
SYSUSER SYSUSERPASSWORD 密码

Oracle数据库连接生成DDL的更多相关文章

  1. Oracle数据库连接生成DataX的job-Json

    package com.bbkj.main; import com.bbkj.DbUtils.ConnectionPoolManager; import com.bbkj.DbUtils.DbUtil ...

  2. 转 listener.log文件过大导致oracle数据库连接非常慢

    数据库(31)  最近发现oracle数据库连接非常慢,sqlplus很快,用客户端就很慢,甚至会无响应. 然后服务器内存一下就飙升到了90%,不是表空间占满了,也不是数据库连接数占满了.重启还是一样 ...

  3. 成功部署SSIS中含有Oracle数据库连接的ETL包

    RT,正式写之前,我想说,真TMD不容易!!! 写博客,责任心,很重要 在百度搜出来的内地博客技术文章(CSDN.ITEYE.CNBLOGS……),大部分都是不全面,只针对一个遇到的问题点的记录,可以 ...

  4. 银行账户管理系统(oracle数据库连接池,数据库的链接,)

    /* * 银行账户管理系统: * 属性:账户id,姓名,金额salary,利息类型: *管理员模块实现的功能: * 1.给用户开户 * 2.查询所有账户信息 * 用户模块实现的功能: * 1.显示用户 ...

  5. Oracle数据库生成UUID

    从Data Ghost的blog得知,原来可以用Oracle来生成UUID,做法很简单,如下: select sys_guid() from dual;  数据类型是 raw(16) 有32个字符.

  6. c#与oracle数据库连接池

    c#与oracle数据库连接池 在做一个项目,中间要使用webservice和oracle数据库.我在服务端做了用户身份认证,也就是使用session传递用户的登陆信息.在测试时,当用户少的时候,没有 ...

  7. Oracle中生成uuid的方法

    Oracle中生成uuid的方法 下载LOFTER客户端 在Oracle SQL 提供了一个生成uuid的函数sys_guid: http://download.oracle.com/docs/cd/ ...

  8. 单例模式的Oracle 数据库连接应用

    新建一个类来实现单例模式的Oracle 数据库连接应用 组织架构如下: 类的具体代码如下: package com.zse.dba; import java.sql.*; //设计模式1:单例模式.保 ...

  9. window7+wamp环境配置Oracle数据库连接

    最近开发需要使用的oracle数据库!翻看了PHP手册,也在网上找了些帖子!功夫不负有心人,花费了四五个小时的时间,终于找到了Oracle的配置方法.下面就讲解下如何配置Oracle数据库连接吧! 附 ...

随机推荐

  1. SQL.Cookbook 读书笔记2 查询结果排序

    第二章 查询结果排序 2.1 按查询字段排序 order by sal asc; desc;-- 3表示sal 2.2 按子串查询 );--按job的最后两个字符排序 2.3 对字符数字混合排序 cr ...

  2. IIS无法连接LocalDb,怎么办?

    最近安装了vs 2013,电脑配置不太好,所以没有安装数据库,直接使用vs2013自带的localdb工具,直接运行访问本地mdf数据库文件.但是部署到IIS就出问题了.问题就像下面的图片一样. 最后 ...

  3. JavaScript基础深入之

    JS的数值类型是分为两类:基本数据类型和引用数据类型. 基本类型占据的内存栈空间,引用类型被保存在堆空间.引用类型赋值的变量也是被保存在栈空间的,它的作用类似于电视遥控器,负责操作堆空间内指向的对象. ...

  4. Linux中的日志分析及管理

    日志文件对于诊断和解决系统中的问题很有帮助,因为在Linux系统中运行的程序通常会把系统消息和错误消息写入相应的日志文件,这样系统一旦出现问题就会“有据可查”.此外,当主机遭受攻击时,日志文件还可以帮 ...

  5. view {display:block}

    view {display:block}

  6. Starting Session of user root.

    Sep 23 01:50:01 d systemd: Started Session 1475 of user root.Sep 23 01:50:01 d systemd: Starting Ses ...

  7. jQuery-PHP跨域请求数据

    jQuery: //获取域名 function getDomain(url){ var a = document.createElement('a'); a.href = url; url=a.hos ...

  8. 000-mysql小技巧

    1.使用Navicat 链接5.7版本出现 mysql 5.7.9 [Err] 1055报错解决,[Err] 1055 – Expression #1 of ORDER BY clause is no ...

  9. 字符串之_strncat

    功能:将src的前n个字符添加到dest的后面 输入:dest,src,count 返回:ret #include <iostream> #include <assert.h> ...

  10. LDAP注入

    理解LDAP与LDAP注入 0x01 LDAP简介 查阅了一些网上的资料,读了好久还是觉得理解起来很困难,感觉还是不够干,之后看到的一个博客http://www.chinaunix.net/old_j ...