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

package com.bbkj.main;

import com.bbkj.DbUtils.ConnectionPoolManager;
import com.bbkj.DbUtils.DbUtil;
import com.bbkj.DbUtils.IConnectionPool;

import java.io.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashSet;
import java.util.Set;

/**
 * Created by Administrator on 2016/12/7.
 */
public class Json {

    public static void main(String [] args) throws InterruptedException {
        testOracle();
    }
    /**
     * 一个非常标准的连接Oracle数据库的示例代码
     */
    public static void testOracle()
    {
        Connection con = null;// 创建一个数据库连接
        PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
        ResultSet result = null;// 创建一个结果集对象
        try
        {
            con = DbUtil.pool.getConnection();
            String sql = "select * from user_tables";// 预编译语句,“?”代表参数
            pre = con.prepareStatement(sql);// 实例化预编译语句
            //pre.setString(1, "");// 设置参数,前面的1表示参数的索引,而不是表中列名的索引
            result = pre.executeQuery();// 执行查询,注意括号中不需要再加参数
            StringBuilder sbstr =new StringBuilder();

            //fos.write(rs.getInt(1));
            InputStreamReader fis = new InputStreamReader(
                    new FileInputStream(System.getProperty("user.dir")+"/template/template.json"));
            BufferedReader  bis = new BufferedReader(fis);
            String data = null;
            while ((data =bis.readLine())!=null){
                sbstr.append(data);
            }
            data = sbstr.toString();

            while (result.next()) {
                StringBuilder sb =new StringBuilder();
                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;
                FileOutputStream fos = new FileOutputStream("E:\\bobo\\dbfile\\"+result.getString("table_name")+".json",false);
                PrintStream p = new PrintStream(fos);
                while (subresult.next()) {
                    if(i>0){
                        sb.append(",");
                    }
                    sb.append(" ").append(subresult.getString("COLUMN_NAME"))
                            .append(" ");
                    i++;
                }
                System.out.println(sb.toString());
                data = data.replaceAll("\\$\\{table\\}",result.getString("table_name"));
                data = data.replaceAll("\\$\\{fields\\}",sb.toString());
                p.print(data.toString());
                p.close();
                fos.flush();
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                // 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
                // 注意关闭的顺序,最后使用的最先关闭
                if (result != null)
                    result.close();
                if (pre != null)
                    pre.close();
                if (con != null) {
                    DbUtil.pool.releaseConn(con);
                    con.close();
                }
                System.out.println("数据库连接已关闭!");
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    }
}

这里用到了一个别人写的数据库连接池:我的另外一篇文章有转载http://www.cnblogs.com/HendSame-JMZ/articles/6145456.html

//取得该用户下所有的表
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 密码

时间: 2024-08-25 05:34:05

Oracle数据库连接生成DataX的job-Json的相关文章

Oracle手工生成段建议(Segment Advisor)

一.描写叙述 从oracle 10g開始,oracle引入了段顾问(Segment Advisor),用于检查数据库中是否有与存储空间相关的建议,而且从10gR2開始,oracle自己主动调度并执行一个段顾问作业,定时分析数据库中的段,并将分析结果放在内部表中.可是非常多情况下,作为DBA,我们都会将oracle自带的各种调度作业(统计信息收集.段顾问.SQL顾问等等)禁用,进而通过手工进行控制执行类似作业(或者为了节省资源).因此非常多情况下,我们都没实用到段顾问这个非常实用的功能.这篇文章就

oracle 数据库连接

两种方式:1.IP+SID方式 2.配置链接方式 1..IP+SID方式 DbHelperOracle.connectionString = string.Format(@"Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = {0})(PORT = 1521)) ) (CONNECT_DATA = (SID = {1}) (SERVER = DEDICATED) ) );User Id={2}

Oracle中生成uuid的方法

Oracle中生成uuid的方法 下载LOFTER客户端 在Oracle SQL 提供了一个生成uuid的函数sys_guid: http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/functions187.htm#i79194 http://en.wikipedia.org/wiki/Universally_unique_identifier SQL> select sys_guid() from dual ; SYS_

c#与oracle数据库连接池

c#与oracle数据库连接池 在做一个项目,中间要使用webservice和oracle数据库.我在服务端做了用户身份认证,也就是使用session传递用户的登陆信息.在测试时,当用户少的时候,没有问题,但是当大量用户同时访问时,就报错,起初以为是自己的oracle连接部分有问题,几经确认,终于发现了是连接池的问题. 以下是从别人的博客中摘抄的,不敢造次,收录如下: "连接根据连接字符串以及用户标识来建立池连接.因此,如果使用网站上的基本身份验证或 Windows 身份验证以及集成的安全登录,

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

RT,正式写之前,我想说,真TMD不容易!!! 写博客,责任心,很重要 在百度搜出来的内地博客技术文章(CSDN.ITEYE.CNBLOGS……),大部分都是不全面,只针对一个遇到的问题点的记录,可以说毫无参考价值,甚至会把你指向错误的方向. 为什么?因为无当时系统环境交待,工具版本信息,其它客观因素(非原生,有插件等等).但是搞技术的都知道,这些因素非常重要. 但我们再看看台湾 dotblogs 上的文章(百度偶尔抽风,给点tw的结果),案例: http://www.dotblogs.com.

Java,Javascript,Oracle开发生成UUID或GUID方法总结

1.Java开发生成UUID或GUID方法 // 36位的,带中划线 java.util.UUID.randomUUID().toString(); // 32位的,去掉中划线 java.util.UUID.randomUUID().toString().replaceAll("-", ""); 2.Javascript开发生成UUID或GUID方法 /* 参数middle_line true:带中划线 false不带中划线*/ function newGuid(m

Java通用oracle数据库连接

Java中oracle数据库连接写一个通用类UBUtil(){} import java.io.InputStream; import java.sql.*; import java.util.Properties; public class DBUtil { private static Connection con; private static String url; private static String user; private static String pwd; public

Oracle数据库连接检测(Shell)

1 版本信息 Oracle数据库版本:Oracle Release 10.2.0.1.0 系统版本:Red Hat EnterpriseLinux 5.4 2 检测步骤 2.1 编写Shell脚本 在有SQLPLUS执行权限的用户下,编辑check_oracle_connection.sh脚本. vi check_oracle_connection.sh 编辑内容如下: #!/bin/bash #functions: connect oracle server test #author:Ares

拼接字符串,生成tree格式的JSON数组

之前做的执法文书的工作,现在需要从C#版本移植到网页版,从Thrift接口获取数据,加载到对应的控件中 之前用的easyui的Tree插件,通过<ul><li><span></span></li></ul>标签的方式生成node树,条理清晰,虽然麻烦点,但是用循环写几行代码就能搞定,但是,在Ajax的函数里面,tree的样式加载不上,显示的格式就是元素自带的含义,<ul>和<li>,无法点击,下面的工作也就无法