java实现从一个数据库查询数据经过处理导入另外一个数据库中

当数据库表中有clob字段或要对表中数据做较复杂处理时就不太好用脚本从一个数据库导入数据到另外一个数据库中了,这时就要通过代码实现了,下面以orale数据库为例代码如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.UUID;

import oracle.jdbc.driver.OracleConnection;
import oracle.sql.CLOB;

/**
 * import data from one database to another
 *
 * @author
 * @version
 */
public class ImportDataByJdbc {
	public static void main(String[] args) throws Exception {
		Connection con = null;// 创建一个数据库连接
		PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
		ResultSet result = null;// 创建一个结果集对象
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
			System.out.println("开始尝试连接cms数据库!");
			String url = "jdbc:oracle:" + "thin:@192.168.0.xx:1521:ORCL";
			String user = "policy";// 用户名,系统默认的账户名
			String password = "xxxx";// 你安装时选设置的密码
			con = DriverManager.getConnection(url, user, password);// 获取连接
			System.out.println("cms连接成功!");
			String sql = "select t.title,t.channel_code,t.content from cms_news t";// 预编译语句,“?”代表参数
			pre = con.prepareStatement(sql);// 实例化预编译语句
			result = pre.executeQuery();// 执行查询,注意括号中不需要再加参数
			importData(result);
			// while (result.next())
			// 当结果集不为空时
			// System.out.println("用户名:" + result.getString("title"));
		} 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("cms数据库连接已关闭!");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

	}

	public static String importData(ResultSet result) {

		Connection con = null;// 创建一个数据库连接
		PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
		ResultSet result2 = null;// 创建一个结果集对象
		Timestamp currentTime = new Timestamp(System.currentTimeMillis());
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String dateString = formatter.format(currentTime);
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
			System.out.println("开始尝试连接omp数据库!");
			String url = "jdbc:oracle:" + "thin:@192.168.0.xx:1521:orclgbk";
			String user = "xjsp";// 用户名,系统默认的账户名
			String password = "xxx";// 你安装时选设置的密码
			con = DriverManager.getConnection(url, user, password);// 获取连接
			System.out.println("omp连接成功!");
			int num = 0;
			while (result.next()) {
				String id = getUUID();
				String entryType = getEntryType(result
						.getString("CHANNEL_CODE"));
				String sql = "insert into kms_entry(ID,ENTRY_NAME,ENTRY_TYPE,ENTRY_CONTENT,EDIT_FLAG,AUDIT_TIME,IF_DEL,IF_AUDIT,LAST_EDIT_TIME,CREATE_USER,CREATE_TIME,LAST_EDIT_USER) "
						+ " values('"
						+ id
						+ "','"
						+ result.getString("title")
						+ "','"
						+ entryType
						+ "',?,'1',to_date('"
						+ dateString
						+ "','yyyy-mm-dd hh24:mi:ss'),'1','3',to_date('"
						+ dateString
						+ "','yyyy-mm-dd hh24:mi:ss'),'00000000000000000000000000000000',to_date('"
						+ dateString
						+ "','yyyy-mm-dd hh24:mi:ss'),'00000000000000000000000000000000')";// 预编译语句,“?”代表参数
				pre = con.prepareStatement(sql);// 实例化预编译语句
				CLOB clob = new CLOB((OracleConnection) con); // 创建一个实例化对象
				clob = oracle.sql.CLOB.createTemporary((OracleConnection) con,
						true, 1);
				clob.putString(1, result.getString("CONTENT")); // 为对象赋值
				pre.setClob(1, clob);
				pre.execute();
				pre.close();
				num = num + 1;
				System.out.println("插入成功第" + (num) + "条数据");

			}

		} 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("omp数据库连接已关闭!");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return null;

	}

	/**
	 * 获取uuid
	 *
	 * @return
	 */
	public static String getUUID() {
		UUID uuid = UUID.randomUUID();
		String s = uuid.toString();
		String uuids = s.substring(0, 8) + s.substring(9, 13)
				+ s.substring(14, 18) + s.substring(19, 23) + s.substring(24);
		return uuids;
	}

	public static String getEntryType(String chanelcode) {
		String entryTypeString = "";
		if (chanelcode != "" && chanelcode != null) {
			处理数据.....
		}

		return entryTypeString;

	}
}

其中clob字段要用放进clob对象然后才进行插入,getUUID是当数据库中表的主键不是自增长生成时需要自己获取进行保存,如果数据库表设置的是自增长主键就不需要这个了

时间: 2024-08-04 21:30:12

java实现从一个数据库查询数据经过处理导入另外一个数据库中的相关文章

用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。

最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量.<s:iterator>标签有一个value属性,用来存放在Action类的方法中存数据的list集合,还有一个id,好像是说指定集合的索引的意思,就是给list集合遍历出来的每个对象加上一个数字标签,反正我是这么理解的,没用过.还有一个很重要,就是var变量,我在s:iterator按ctr

C#连接Oracle数据库查询数据

C#连接Oracle数据库可以实现许多我们需要的功能,下面介绍的是C#连接Oracle数据库查询数据的方法,如果您对C#连接Oracle数据库方面感兴趣的话,不妨一看. using System; using System.Collections.Generic; using System.ComponentModel using System.Data.OracleClient;;//这行和下一行都要先在引用中填加system.data.oracleclient using System.Da

输入一个int型数据,计算出它在内存中存储时含1的个数

/******************************************************** 输入一个int型数据,计算出它在内存中存储时含1的个数 比如: 输入:5 输出:2 ********************************************************/ #include<iostream> int CountOne(int num) { int count = 0; while(num){ count++; num = num&am

[转]C#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值

本文来自:http://www.cnblogs.com/mrchenzh/archive/2010/05/31/1747937.html /***************************************** * 说明:利用反射将数据库查询的内容自动绑定 *       到实体类 * * 时间:1:49 2009-9-19 * * 程序员:王文壮 * ***************************************/ /****************数据库脚本***

简单地从数据库查询数据使用poi插入创建Excel

本次使用到的jar包 代码 public class CreateExcel01 { // 数据库查询 public static List<Account> query() { String sql = "select * from tb_account"; List<Account> list = BaseDao.findRows(sql, null, Account.class); return list; } // 创建Excel public stat

SpringMVC——项目启动时从数据库查询数据

SpringMVC项目中遇到这样的问题: 1.很多数据字典需要从数据库中查询: 2.懒得修改SQL语句: 3.想在项目中声明静态变量存储数据字典,但是希望这个字典可以在项目启动时进行加载. 当遇到这样的问题时,可以通过实现org.springframework.beans.factory.InitializingBean接口进行实现这一功能. 只需要实现afterPropertiesSet()方法就将在项目扫描完注解时调用这一方法,在这个方法内调用数据库查询的方法,查出所有数据字典,并保存在静态

人生第一个python脚本:从数据库查询数据并发送邮件

#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb import smtplib from email.mime.text import MIMEText from email.header import Header import time date = time.strftime('%Y-%m-%d') # 打开数据库连接 conn = MySQLdb.connect( host='localhost', port = 3306,

脚本——loadrunner连接oracle数据库查询数据

import java.io.*; import java.sql.*; import lrapi.lr; public class Actions { int sum=0; public int init() throws Throwable { return 0; }//end of init public int action() throws Throwable { try{ //定义了数据库连接串 /*DSN=ORACL_LR;UID=FASP_150001;PWD=1;DBQ=192

java SHH框架 实现数据库查询出的list导入excel并下载

1.前言  struts2对于写入excel数据支持的很好,话不多说,上代码 2.jsp页面: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <% String p