大概过程如下:
①.、先安装对应的透明网关组件
DRDA_REMOTE_DB_NAME=test
HS_DB_NAME=test
(SID_DESC=
(SID_NAME=test)
(ORACLE_HOME = 设置为$ORACLE_HOME)
)
(DESCRIPTION =
(ADDRESS_LIST =
(CONNECT_DATA =
(SERVICE_NAME = test)
(HS = OK)
数据迁移:
SELECT
TABNAME TAB, --表英文名称
COLNAME COL, --列名称
CASE
WHEN TYPENAME LIKE 'SMALLINT' OR TYPENAME LIKE 'BIGINT' THEN 'INTEGER'
WHEN TYPENAME ='CHARACTER' THEN 'CHAR'
WHEN TYPENAME='DECFLOAT' OR TYPENAME ='DECIMAL' THEN 'NUMBER'
ELSE TYPENAME
END TY
, --数据类型
LENGTH LEN , --列长度
scale S, --精度
WHEN NULLS='N' THEN '否'
WHEN NULLS='Y' THEN '是'
END N --是否为空
--TY||'('||LEN||')'
FROM
SYSCAT.COLUMNS S
WHERE
/* and s.SCALE 0*/
ORDER BY
S.TABNAME,
S.COLNO
package com.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
static{
try {
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
} catch (ClassNotFoundException e) {
}
public Connection getConnection(){
Connection conn=null;
conn=DriverManager.getConnection(URL, USER, PASSWORD);
} catch (SQLException e) {
return conn;
此类链接oracle数据库工具类
此类用来关闭数据库连接工具类
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class CloseFunction {
//关闭连接方法,释放资源
public static void closeConnection(Connection conn){
if (conn !=null){
conn.close();
//关闭执行sql,释放资源
public static void closeExecuteSQL(Statement preparedStatement){
if (preparedStatement !=null){
preparedStatement.close();
//关闭查询SQL结果,释放资源
public static void closeResultSet(ResultSet resultSet){
if(resultSet !=null){
resultSet.close();
package com.dao;
import java.security.interfaces.RSAKey;
import org.junit.Test;
import com.util.CloseFunction;
import com.util.ConnectionOracle;
@Test
public void test1() throws SQLException{
long startTime=System.currentTimeMillis(); //记录开始时间
Connection connOracle=null; //链接oracle数据库
Statement statement=null;
ResultSet resultSet=null;
PreparedStatement preparedStatement=null;
ConnectionOracle connectionOracle=new ConnectionOracle();
// System.out.println(connectionOracle+"链接oracle成功!");
String
,SENDTIME,ALARMTIME,SENDCONTENT,ISSEND ,ELEALARMID from
//执行oracle数据库sql语句,此处并非固定代码
//String oracleSQL="INSERT INTO EPC.SYS_LOG(ID,REMARK) values(?,?)";
oracleSQL="INSERT INTO
EPC.ET_SENDMESSAGEINFO(ID,SENDNO,SENDTYPE,BRNUMBER
,SENDTIME,ALARMTIME,SENDCONTENT,ISSEND ,ELEALARMID )"
+ "VALUES(?,?,?,?,?,?,?,?,?)";
connOracle=connectionOracle.getConnection(); //获取oracle数据库连接
connOracle.setAutoCommit(false); //把oracle数据库设置为非自动提交,以免在再循环里每次都提交,减低效率
preparedStatement=connOracle.prepareStatement(oracleSQL); //执行oracle语句,预编译
int num=0;
while (resultSet.next()) {
num ++;
preparedStatement.setString(1,resultSet.getString("ID"));
preparedStatement.setString(10, resultSet.getString("CONSUMETIME"));
preparedStatement.setString(11, resultSet.getString("TASKID"));
preparedStatement.addBatch();
//每一万次在oracle数据库里提交事务
if(num10000){
preparedStatement.executeBatch();
connOracle.commit();
num=0;
} catch (Exception e) {
connOracle.rollback(); //oracle数据库事务回滚
}finally{
new CloseFunction().closeConnection(connOracle); //关闭oracle数据库,释放资源
long endTime=System.currentTimeMillis(); //记录程序结束时间
System.out.println("总的时间:"+(endTime-startTime)/1000+"秒");
这个比较好办.
建立一个 exp的目录 下面建立一个 log 的文件 来存放错误日志 等.
第一步 建立一个exp.bat 内容如下
echo Over Over
第二步 在exp目录下建立 zx.sql 内容如下
EXPORT TO
'ZX.TXT' OF DEL
//这个sql是 导出假设 表名是 zx的表.
然后你在建立一个 imp.bat 的文件,来把zx.txt 导入到 oracle,你需要建立 一个bad的目录和ctl的目录来存放oracle的ctl 文件.imp.bat 的内容如下
//假设用户是 scott 数据的SID是 test
load data
infile 'zx.txt'
append into table zx
fields terminated by '^H '
①.、Oracle没有DROP TABLE IF EXISTS
数据类型一致
以上就是土嘎嘎小编大虾米为大家整理的相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!