最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
db2怎么轉(zhuǎn)oracle,db2怎么轉(zhuǎn)換日期格式

DB2到Oracle的SQL轉(zhuǎn)換

本篇記錄項(xiàng)目中DB2的SQL轉(zhuǎn)為Oracle時(shí)的不同之處:

在網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)過程中,需要針對客戶的行業(yè)特點(diǎn)、產(chǎn)品特性、目標(biāo)受眾和市場情況進(jìn)行定位分析,以確定網(wǎng)站的風(fēng)格、色彩、版式、交互等方面的設(shè)計(jì)方向。創(chuàng)新互聯(lián)還需要根據(jù)客戶的需求進(jìn)行功能模塊的開發(fā)和設(shè)計(jì),包括內(nèi)容管理、前臺(tái)展示、用戶權(quán)限管理、數(shù)據(jù)統(tǒng)計(jì)和安全保護(hù)等功能。

1、Oracle沒有DROP TABLE IF EXISTS

2、db2函數(shù)用returns [類型],Oracle用return [類型]

3、db2用DECLARE來申明變量,Oracle申明變量在as/is后面

4、db2用SET來賦值變量,Oracle用:=

5、db2用ELSEIF,oracle用ELSIF

6、Oracle中的coalesce函數(shù)(用來獲取第一個(gè)不為空的值)里面的數(shù)據(jù)類型,必須全部都跟第一列的

數(shù)據(jù)類型一致

7、Oracle函數(shù)最后要加個(gè)END [函數(shù)名]

8、DB2為sysibm.dual,Oracle為dual

9、Oracle對象名不能超過30個(gè)字符

怎么把db2的數(shù)據(jù)導(dǎo)入到oracle中 iteye

這個(gè)比較好辦。

建立一個(gè) exp的目錄 下面建立一個(gè) log 的文件 來存放錯(cuò)誤日志 等。

第一步 建立一個(gè)exp.bat 內(nèi)容如下

db2 connect to test user db2inst1 using 123456 //假設(shè)數(shù)據(jù)庫為test 密碼為123456

db2 -td@ -f ./zx.sql log\zx.log

echo Over Over

第二步 在exp目錄下建立 zx.sql 內(nèi)容如下

EXPORT TO

'ZX.TXT' OF DEL

MODIFIED BY COLDEL0X08 NOCHARDEL

SELECT "字段1", "字段2" , "字段3" ,''字段n" FROM "DB2INST1"."ZX" order by "ZXID"@

//這個(gè)sql是 導(dǎo)出假設(shè) 表名是 zx的表。

現(xiàn)在 db2的數(shù)據(jù)已經(jīng)導(dǎo)出了。

然后你在建立一個(gè) imp.bat 的文件,來把zx.txt 導(dǎo)入到 oracle,你需要建立 一個(gè)bad的目錄和ctl的目錄來存放oracle的ctl 文件.imp.bat 的內(nèi)容如下

sqlldr scott/123@test control=ctl\zx.ctl log=log\zx-imp.log bad=bad\zx.bad

//假設(shè)用戶是 scott 數(shù)據(jù)的SID是 test

下面 來建立 oracle 控制文件 zx.ctl 的內(nèi)容 需要把你從db2的導(dǎo)出文件 zx.txt 導(dǎo)入到oracle

load data

infile 'zx.txt'

append into table zx

fields terminated by '^H '

如何把 DB2 數(shù)據(jù)遷移到 oracle 中

數(shù)據(jù)遷移:

1、在DB2數(shù)據(jù)庫中通過以下表查詢出表的結(jié)構(gòu)

SELECT

TABNAME TAB, --表英文名稱

COLNAME COL, --列名稱

CASE

WHEN TYPENAME='VARCHAR' THEN 'VARCHAR2'

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

, --數(shù)據(jù)類型

LENGTH LEN , --列長度

scale S, --精度

CASE

WHEN NULLS='N' THEN '否'

WHEN NULLS='Y' THEN '是'

END N --是否為空

--TY||'('||LEN||')'

FROM

SYSCAT.COLUMNS S

WHERE

LEFT( TABSCHEMA, 3 ) 'SYS'

/* and s.SCALE 0*/

ORDER BY

S.TABNAME,

S.COLNO

2、根據(jù)表的結(jié)構(gòu)在oracle數(shù)據(jù)庫中建表(腳本見《create_tab_onOracle.sql》)

3、通過編寫java程序把數(shù)據(jù)從DB2導(dǎo)入到oracle數(shù)據(jù)庫中(以下代碼思想僅供參考)

3.1、 導(dǎo)入db2jcc_license_cu.jar 、db2jcc.jar 、ojdbc14.jar 三個(gè)jar包即可

3.2、 編寫三個(gè)工具類

此類鏈接DB2數(shù)據(jù)庫工具類

package com.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

public class ConnectionDB2 {

private static final String URL="jdbc:db2://192.168.0.98:50000/sem"; //DB2數(shù)據(jù)庫url

private static final String USER="db2admin"; //DB2數(shù)據(jù)庫賬號

private static final String PASSWORD="dnhc9988"; //DB2數(shù)據(jù)庫密碼

static{

try {

Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance(); //利用反射注冊驅(qū)動(dòng)

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

public Connection getConnection(){

Connection conn=null;

try {

conn=DriverManager.getConnection(URL, USER, PASSWORD);

} catch (SQLException e) {

e.printStackTrace();

}

return conn;

}

}

此類鏈接oracle數(shù)據(jù)庫工具類

package com.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

public class ConnectionDB2 {

private static final String URL="jdbc:db2://192.168.0.98:50000/sem"; //DB2數(shù)據(jù)庫url

private static final String USER="db2admin"; //DB2數(shù)據(jù)庫賬號

private static final String PASSWORD="dnhc9988"; //DB2數(shù)據(jù)庫密碼

static{

try {

Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance(); //利用反射注冊驅(qū)動(dòng)

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

public Connection getConnection(){

Connection conn=null;

try {

conn=DriverManager.getConnection(URL, USER, PASSWORD);

} catch (SQLException e) {

e.printStackTrace();

}

return conn;

}

}

此類用來關(guān)閉數(shù)據(jù)庫連接工具類

package com.util;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class CloseFunction {

//關(guān)閉連接方法,釋放資源

public static void closeConnection(Connection conn){

if (conn !=null){

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

//關(guān)閉執(zhí)行sql,釋放資源

public static void closeExecuteSQL(Statement preparedStatement){

if (preparedStatement !=null){

try {

preparedStatement.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

//關(guān)閉查詢SQL結(jié)果,釋放資源

public static void closeResultSet(ResultSet resultSet){

if(resultSet !=null){

try {

resultSet.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

關(guān)鍵在此類:需要從DB2數(shù)據(jù)庫查詢語句放在db2SQL變量中,往oracle插入數(shù)據(jù)的語句放在oracleSQL變量中。注意,查詢和插入的語句中字段順序要一致,在while循環(huán)里要對日期時(shí)間處理(用setDate),然后執(zhí)行junit測試類就可以了。

package com.dao;

import java.security.interfaces.RSAKey;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import org.junit.Test;

import com.util.CloseFunction;

import com.util.ConnectionDB2;

import com.util.ConnectionOracle;

public class FromDB2ToOracle {

@Test

public void test1() throws SQLException{

long startTime=System.currentTimeMillis(); //記錄開始時(shí)間

Connection connDB2=null; //鏈接DB2數(shù)據(jù)庫

Connection connOracle=null; //鏈接oracle數(shù)據(jù)庫

Statement statement=null;

ResultSet resultSet=null;

PreparedStatement preparedStatement=null;

try {

ConnectionOracle connectionOracle=new ConnectionOracle();

// System.out.println(connectionOracle+"鏈接oracle成功!");

ConnectionDB2 connectionDB2=new ConnectionDB2();

// System.out.println(connectionDB2+"--鏈接DB2數(shù)據(jù)庫成功!");

connDB2=connectionDB2.getConnection();

//執(zhí)行DB2數(shù)據(jù)庫sql語句,此處并非固定代碼

String

db2SQL="SELECT ID,SENDNO,SENDTYPE,BRNUMBER

,SENDTIME,ALARMTIME,SENDCONTENT,ISSEND ,ELEALARMID from

DB2ADMIN.ET_SENDMESSAGEINFO";

//執(zhí)行oracle數(shù)據(jù)庫sql語句,此處并非固定代碼

//String oracleSQL="INSERT INTO EPC.SYS_LOG(ID,REMARK) values(?,?)";

String

oracleSQL="INSERT INTO

EPC.ET_SENDMESSAGEINFO(ID,SENDNO,SENDTYPE,BRNUMBER

,SENDTIME,ALARMTIME,SENDCONTENT,ISSEND ,ELEALARMID )"

+ "VALUES(?,?,?,?,?,?,?,?,?)";

statement=connDB2.createStatement();

statement.execute(db2SQL); //執(zhí)行sql語句

resultSet=statement.getResultSet(); //獲取DB2數(shù)據(jù)庫的結(jié)果集

connOracle=connectionOracle.getConnection(); //獲取oracle數(shù)據(jù)庫連接

connOracle.setAutoCommit(false); //把oracle數(shù)據(jù)庫設(shè)置為非自動(dòng)提交,以免在再循環(huán)里每次都提交,減低效率

preparedStatement=connOracle.prepareStatement(oracleSQL); //執(zhí)行oracle語句,預(yù)編譯

int num=0;

while (resultSet.next()) {

num ++;

preparedStatement.setString(1,resultSet.getString("ID"));

preparedStatement.setString(2, resultSet.getString("SENDNO"));

preparedStatement.setString(3, resultSet.getString("SENDTYPE"));

preparedStatement.setString(4, resultSet.getString("BRNUMBER"));

preparedStatement.setDate(5, resultSet.getDate("SENDTIME"));

preparedStatement.setDate(6, resultSet.getDate("ALARMTIME"));

preparedStatement.setString(7, resultSet.getString("SENDCONTENT"));

preparedStatement.setString(8, resultSet.getString("ISSEND"));

preparedStatement.setString(9, resultSet.getString("ELEALARMID"));/*

preparedStatement.setString(10, resultSet.getString("CONSUMETIME"));

preparedStatement.setString(11, resultSet.getString("TASKID"));

preparedStatement.setString(12, resultSet.getString("ISSYNCHRO"));

preparedStatement.setString(13,resultSet.getString("LOGTYPE"));

preparedStatement.setString(14, resultSet.getString("ISCACHE"));

preparedStatement.setString(15, resultSet.getString("LAST_RPORT_TIME"));

preparedStatement.setString(16, resultSet.getString("AUTO_REMEMBER"));

preparedStatement.setString(17, resultSet.getString("REMARK"));*/

preparedStatement.addBatch();

//每一萬次在oracle數(shù)據(jù)庫里提交事務(wù)

if(num10000){

preparedStatement.executeBatch();

connOracle.commit();

num=0;

}

}

preparedStatement.executeBatch();

connOracle.commit();

} catch (Exception e) {

connOracle.rollback(); //oracle數(shù)據(jù)庫事務(wù)回滾

e.printStackTrace();

}finally{

new CloseFunction().closeConnection(connOracle); //關(guān)閉oracle數(shù)據(jù)庫,釋放資源

new CloseFunction().closeConnection(connDB2); //關(guān)閉DB2數(shù)據(jù)庫,釋放資源

long endTime=System.currentTimeMillis(); //記錄程序結(jié)束時(shí)間

System.out.println("總的時(shí)間:"+(endTime-startTime)/1000+"秒");

}

}

}

db2遷移到oracle有哪幾種方式

在oracle中,建立透明網(wǎng)關(guān),連接到db2數(shù)據(jù)庫中.

大概過程如下:

1、先安裝對應(yīng)的透明網(wǎng)關(guān)組件

2、initudb.ora--inittest.ora,主要修改下面幾個(gè)參數(shù)

DRDA_CONNECT_PARM=db2數(shù)據(jù)庫ip:端口

DRDA_REMOTE_DB_NAME=test

HS_DB_NAME=test

3、listener.ora文件增加

(SID_DESC=

(SID_NAME=test)

(ORACLE_HOME = 設(shè)置為$ORACLE_HOME)

(PROGRAM=g4drsrv)

)

4、tnsnames.ora

gatewaydb2=

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = oracle數(shù)據(jù)庫主機(jī)ip)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = test)

)

(HS = OK)

)

5、創(chuàng)建dblink和執(zhí)行綁定包


標(biāo)題名稱:db2怎么轉(zhuǎn)oracle,db2怎么轉(zhuǎn)換日期格式
分享鏈接:http://fisionsoft.com.cn/article/dsschcc.html