单位用的是DB2数据库,单位昨天才让我学,今天说有4亿多数据,让我添加1000万数据进去,怎么 *** 作

单位用的是DB2数据库,单位昨天才让我学,今天说有4亿多数据,让我添加1000万数据进去,怎么 *** 作,第1张

你们老板真大胆,这么大的数据让完全不懂的人管理,不怕弄坏了么?

你的问题太含糊,不好回答。批量数据添加一般是import或load *** 作。。。

还是学学数据库知识先吧。基础入门很简单的。

右键数据库-->所有任务-->还原数据库-->写入你想要的新的数据库名字-->从设备-->选择设备-->添加-->选择你的文件-->确定-->确定-->选项-->改为现在的data目录的路径-->OK

其中:

"写入名字"-->不要与现在的冲突了,或选强制恢复

"改为现在的data目录的路径"-->如默认是"c:\data\mdf"而现在的sql的data目录是d:\data就改为d:\data\mdf

数据迁移:

1、在DB2数据库中通过以下表查询出表的结构

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

, --数据类型

LENGTH LEN , --列长度

scale S, --精度

CASE

WHEN NULLS='N' THEN '否'

WHEN NULLS='Y' THEN '是'

END N --是否为空

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

FROM

SYSCATCOLUMNS S

WHERE

LEFT( TABSCHEMA, 3 ) <> 'SYS'

/ and sSCALE <>0/

ORDER BY

STABNAME,

SCOLNO

2、根据表的结构在oracle数据库中建表(脚本见《create_tab_onOraclesql》)

3、通过编写java程序把数据从DB2导入到oracle数据库中(以下代码思想仅供参考)

31、 导入db2jcc_license_cujar 、db2jccjar 、ojdbc14jar 三个jar包即可

32、 编写三个工具类

此类链接DB2数据库工具类

package comutil;

import javasqlConnection;

import javasqlDriverManager;

import javasqlSQLException;

public class ConnectionDB2 {

private static final String URL="jdbc:db2://192168098:50000/sem"; //DB2数据库url

private static final String USER="db2admin"; //DB2数据库账号

private static final String PASSWORD="dnhc9988"; //DB2数据库密码

static{

try {

ClassforName("comibmdb2jccDB2Driver")newInstance(); //利用反射注册驱动

} catch (InstantiationException e) {

eprintStackTrace();

} catch (IllegalAccessException e) {

eprintStackTrace();

} catch (ClassNotFoundException e) {

eprintStackTrace();

}

}

public Connection getConnection(){

Connection conn=null;

try {

conn=DriverManagergetConnection(URL, USER, PASSWORD);

} catch (SQLException e) {

eprintStackTrace();

}

return conn;

}

}

此类链接oracle数据库工具类

package comutil;

import javasqlConnection;

import javasqlDriverManager;

import javasqlSQLException;

public class ConnectionDB2 {

private static final String URL="jdbc:db2://192168098:50000/sem"; //DB2数据库url

private static final String USER="db2admin"; //DB2数据库账号

private static final String PASSWORD="dnhc9988"; //DB2数据库密码

static{

try {

ClassforName("comibmdb2jccDB2Driver")newInstance(); //利用反射注册驱动

} catch (InstantiationException e) {

eprintStackTrace();

} catch (IllegalAccessException e) {

eprintStackTrace();

} catch (ClassNotFoundException e) {

eprintStackTrace();

}

}

public Connection getConnection(){

Connection conn=null;

try {

conn=DriverManagergetConnection(URL, USER, PASSWORD);

} catch (SQLException e) {

eprintStackTrace();

}

return conn;

}

}

此类用来关闭数据库连接工具类

package comutil;

import javasqlConnection;

import javasqlPreparedStatement;

import javasqlResultSet;

import javasqlSQLException;

import javasqlStatement;

public class CloseFunction {

//关闭连接方法,释放资源

public static void closeConnection(Connection conn){

if (conn !=null){

try {

connclose();

} catch (SQLException e) {

eprintStackTrace();

}

}

}

//关闭执行sql,释放资源

public static void closeExecuteSQL(Statement preparedStatement){

if (preparedStatement !=null){

try {

preparedStatementclose();

} catch (SQLException e) {

eprintStackTrace();

}

}

}

//关闭查询SQL结果,释放资源

public static void closeResultSet(ResultSet resultSet){

if(resultSet !=null){

try {

resultSetclose();

} catch (SQLException e) {

eprintStackTrace();

}

}

}

}

关键在此类:需要从DB2数据库查询语句放在db2SQL变量中,往oracle插入数据的语句放在oracleSQL变量中。注意,查询和插入的语句中字段顺序要一致,在while循环里要对日期时间处理(用setDate),然后执行junit测试类就可以了。

package comdao;

import javasecurityinterfacesRSAKey;

import javasqlConnection;

import javasqlPreparedStatement;

import javasqlResultSet;

import javasqlSQLException;

import javasqlStatement;

import orgjunitTest;

import comutilCloseFunction;

import comutilConnectionDB2;

import comutilConnectionOracle;

public class FromDB2ToOracle {

@Test

public void test1() throws SQLException{

long startTime=SystemcurrentTimeMillis(); //记录开始时间

Connection connDB2=null; //链接DB2数据库

Connection connOracle=null; //链接oracle数据库

Statement statement=null;

ResultSet resultSet=null;

PreparedStatement preparedStatement=null;

try {

ConnectionOracle connectionOracle=new ConnectionOracle();

// Systemoutprintln(connectionOracle+"链接oracle成功!");

ConnectionDB2 connectionDB2=new ConnectionDB2();

// Systemoutprintln(connectionDB2+"-->>>链接DB2数据库成功!");

connDB2=connectionDB2getConnection();

//执行DB2数据库sql语句,此处并非固定代码

String

db2SQL="SELECT ID,SENDNO,SENDTYPE,BRNUMBER

,SENDTIME,ALARMTIME,SENDCONTENT,ISSEND ,ELEALARMID from

DB2ADMINET_SENDMESSAGEINFO";

//执行oracle数据库sql语句,此处并非固定代码

//String oracleSQL="INSERT INTO EPCSYS_LOG(ID,REMARK) values(,)";

String

oracleSQL="INSERT INTO

EPCET_SENDMESSAGEINFO(ID,SENDNO,SENDTYPE,BRNUMBER

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

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

statement=connDB2createStatement();

statementexecute(db2SQL); //执行sql语句

resultSet=statementgetResultSet(); //获取DB2数据库的结果集

connOracle=connectionOraclegetConnection(); //获取oracle数据库连接

connOraclesetAutoCommit(false); //把oracle数据库设置为非自动提交,以免在再循环里每次都提交,减低效率

preparedStatement=connOracleprepareStatement(oracleSQL); //执行oracle语句,预编译

int num=0;

while (resultSetnext()) {

num ++;

preparedStatementsetString(1,resultSetgetString("ID"));

preparedStatementsetString(2, resultSetgetString("SENDNO"));

preparedStatementsetString(3, resultSetgetString("SENDTYPE"));

preparedStatementsetString(4, resultSetgetString("BRNUMBER"));

preparedStatementsetDate(5, resultSetgetDate("SENDTIME"));

preparedStatementsetDate(6, resultSetgetDate("ALARMTIME"));

preparedStatementsetString(7, resultSetgetString("SENDCONTENT"));

preparedStatementsetString(8, resultSetgetString("ISSEND"));

preparedStatementsetString(9, resultSetgetString("ELEALARMID"));/

preparedStatementsetString(10, resultSetgetString("CONSUMETIME"));

preparedStatementsetString(11, resultSetgetString("TASKID"));

preparedStatementsetString(12, resultSetgetString("ISSYNCHRO"));

preparedStatementsetString(13,resultSetgetString("LOGTYPE"));

preparedStatementsetString(14, resultSetgetString("ISCACHE"));

preparedStatementsetString(15, resultSetgetString("LAST_RPORT_TIME"));

preparedStatementsetString(16, resultSetgetString("AUTO_REMEMBER"));

preparedStatementsetString(17, resultSetgetString("REMARK"));/

preparedStatementaddBatch();

//每一万次在oracle数据库里提交事务

if(num>10000){

preparedStatementexecuteBatch();

connOraclecommit();

num=0;

}

}

preparedStatementexecuteBatch();

connOraclecommit();

} catch (Exception e) {

connOraclerollback(); //oracle数据库事务回滚

eprintStackTrace();

}finally{

new CloseFunction()closeConnection(connOracle); //关闭oracle数据库,释放资源

new CloseFunction()closeConnection(connDB2); //关闭DB2数据库,释放资源

long endTime=SystemcurrentTimeMillis(); //记录程序结束时间

Systemoutprintln("总的时间:"+(endTime-startTime)/1000+"秒");

}

}

}

任意多边形的外角和为360°

这个五边形的五个外角及内角分别为:

外角 :360°×1/15=24°内角:180°-24°=156°

360°×2/15=48° 180°-48°=132°

360°×3/15=72° 180°-72°=108°

360°×4/15=96° 180°-96°=84°

360°×5/15=120°180°-120=60°

可以在表前加数据库名和用户名来实现。下面是想法你可试下

你的意思是不是从table1 表中查询数据写到table2中??

user database2

go

insert table2

select 字段1,字段2,字段3,。。。。from database1table1

go

db2move newdbname import 即可

因为你db2move export 出来的是ixf,所以包含了表结构。

不过视图,过程等对象是不包含的,你可以使用db2look 导出结构。

你需要先 db2look -db testdb -o looksql把创建数据库用的sql语句拿出来,在你本地按照前面的looksql建好数据库,然后用load或者import把你export出来的数据倒进数据库里去就可以了。

其实你可以先db2look,再用db2move命令把数据倒出来,建立数据库,再用db2move把数据倒进去。

以上就是关于单位用的是DB2数据库,单位昨天才让我学,今天说有4亿多数据,让我添加1000万数据进去,怎么 *** 作全部的内容,包括:单位用的是DB2数据库,单位昨天才让我学,今天说有4亿多数据,让我添加1000万数据进去,怎么 *** 作、db2 dat 文件怎么导入数据库、如何把 DB2 数据迁移到 oracle 中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9299172.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存