快速轻松地进行DB2数据库导入 (db2导入数据库)
随着数据越来越成为企业核心战略的一部分,企业数据管理的意识越来越得到重视。因此,公司经常需要将各种数据库从一个平台导入另一个平台。DB2数据库是IBM的一种关系型数据库管理系统,它和Oracle和MySQL一起成为世界三大数据库之一。在今天的商业环境中,DB2数据库是越来越受欢迎。
在企业中,因为多种原因,可能会需要将DB2数据库从一个平台迁移到另外一个平台,或者从一个地点迁移到另一个地点。可能是扩大业务或者从某些供应商转移数据。然而,这个转移可能会在不同的平台、环境条件和数据结构之间产生一些问题。特别是,如果您没有经验和正确的工具,将数据导入到DB2数据库可能会很困难,特别是在大规模的数据迁移任务中。
因此,在本文中,我们将探讨一些快速和轻松的方法,您可以使用这些方法将数据导入DB2数据库中。
1. 使用DB2 LOAD命令导入数据
DB2 LOAD命令是一个快速且灵活的工具,可以帮助您将数据导入DB2数据库。它可以加载本地或远程文件中的数据到指定的DB2表中。虽然使用LOAD命令非常方便,但需要您具有对DB2数据库的额外访问权限。
以下是一个例子,使用DB2 LOAD命令加载“example.csv”文件到名为“customer”的表中:
“`
$ db2 load from example.csv of del
insert into customer
“`
在此例中,“example.csv”是要导入的文件,“of del”指示文件是以逗号分隔符的形式存储,“insert into customer”指示将数据导入名为“customer”的表中。
2. 使用DB2 IMPORT命令导入数据
DB2 IMPORT是另一个快速和灵活的DB2导入工具,可以帮助您将数据从各种文件格式导入DB2数据库中。与DB2 LOAD命令相比,DB2 IMPORT更加灵活,因为它支持各种数据格式,例如固定长度数据、分隔符分割数据、XML文件等。还可用于批量导入数据。
以下是一个例子,使用DB2 IMPORT命令加载XML文件到名为“orders”的表中:
“`
$ db2 import from orders.xml of xml
insert into orders
“`
在此例中,“orders.xml”是要导入的文件,“of xml”指示文件是以XML格式存储,“insert into orders”指示将数据导入名为“orders”的表中。
3. 使用DB2 Replication Center导入数据
DB2 Replication Center是一个可视化工具,可帮助您管理不同数据库之间的复制和同步。它还可以在数据库之间传输表和数据。它允许您将表和数据从一个DB2数据库复制到另一个DB2数据库中。DB2 Replication Center可用于在线和离线复制。
以下是一个例子,使用DB2 Replication Center将数据从“customer1”表复制到“customer2”表中:
“`
– 打开DB2 Replication Center
– 选择“Customer1”数据库,并右键单击要复制的表
– 选择“复制表”选项
– 选择要将表复制到的目标数据库
– 点击“完成”按钮
“`
在此例中,“customer1”表是要复制的表,“customer2”表”是目标表。
在本文中,我们介绍了三种快速而轻松的方法,帮助您将数据从不同的数据源导入DB2数据库中。它们是使用DB2 LOAD命令、使用DB2 IMPORT命令和使用DB2 Replication Center。这些方法都是可以灵活使用的,可以根据您的具体需求进行调整和修改,以确保数据的安全和准确性。如果您希望在时间和精力方面节省成本,并且想要快速开始使用DB2数据库,那么这些方法就是您需要的。
相关问题拓展阅读:
- 我想把服务器上的DB2表结构和数据全部导入到本地上的DB2数据库上更好是用控制中心来操作解决了我加分
- 如何把 DB2 数据迁移到 oracle 中
- 如何将Excel表格中的数据批量导入到db数据库中,求大神详细指点晚辈
我想把服务器上的DB2表结构和数据全部导入到本地上的DB2数据库上更好是用控制中心来操作解决了我加分
图形界面很麻烦的,直接用db2look -d dbname -e -o db2look.sql命令就能搞携滑镇棚掂。辩旅腊
假如你的DB实例名为dbname,登录名为username,密码为password
连接db
如果用控制中心,就用connect to dbname user username using passowrd;
如果用运行->db2cmd,就用缺耐唤db2 connect to dbname user username using passowrd;
1.导出数据库表结构、视图、存储过程、触发器等等等等……
db2look -d dbname -e -i username -w password -o C:/db_tables.sql
2.导出数据
export to ‘C:\tablename1.del’ of del select * from “username”.”tablename1″;
export to ‘C:\tablename2.del’ of del select * from “username”.”tablename2″;
……等等
3.在本地的话随便伏凯弄咯,把刚才从服务器上db_tables.sql和各个表的亩颤.del数据文件copy到本地,然后执行db_tables.sql就好了,最后把数据导进去,用这个命令:
import from ‘C:\tablename1.del’ of del insert into “username”.”tablename1″;
….等等
4.噢了
全部手写的哈,难免有错误,自己再研究研究。我下班啦!走了……
用一楼的命令试试。刚开始更好不要用图形界面,用命令行让你对原理理解的更深刻一点。
如何把 DB2 数据迁移到 oracle 中
数据迁移:
1、在DB2数据库中通过以下表查询出表的结构
SELECT
TABNAME TAB, –表英文名称
COLNAME COL, –列名称
CASE
WHEN TYPENAME=’VARCHAR’ THEN ‘VARCHAR2’
WHEN TYPENAME LIKE ‘ALLINT’ 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
SYSCAT.COLUMNS S
WHERE
LEFT( TABSCHEMA, 3 ) ‘SYS’
/* and s.SCALE 0*/
ORDER BY
S.TABNAME,
S.COLNO
2、根据表的结构在oracle数据库中建表(脚本见《create_tab_onOracle.sql》)
3、通过编写让友java程序把数据从DB2导入到oracle数据库中(以下代码思想仅供参考)
3.1、 导入db2jcc_license_cu.jar 、坦败槐db2jcc.jar 、ojdbc14.jar 三个jar包即可
3.2、 编写三个工具类
此类链接DB2数据库工具类
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数据库url
private static final String USER=”db2admin”;//DB2数据库账号
private static final String PASSWORD=”dnhc9988″; //DB2数据库密码
static{
try {
Class.forName(“com.ibm.db2.jcc.DB2Driver”).newInstance(); //利用反射注册驱动
} 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数据库工具类
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数据库url
private static final String USER=”db2admin”;//DB2数据库账号
private static final String PASSWORD=”dnhc9988″; //DB2数据库密码
static{
try {
Class.forName(“com.ibm.db2.jcc.DB2Driver”).newInstance(); //利用反射注册驱动
} 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;
}
}
此类用来关闭数据库连接工具类
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 {
//关闭连接方法,释放资源
public static void closeConnection(Connection conn){
if (conn !=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//关闭执行sql,释放资源
public static void closeExecuteSQL(Statement preparedStatement){
if (preparedStatement !=null){
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//关闭查询SQL结果,释放资源
public static void closeResultSet(ResultSet resultSet){
if(resultSet !=null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
关键在此类:需要从DB2数据库查询语句放在db2SQL变量中,往oracle插入数据的语句放在oracleSQL变量中。注意,查询和插入的语句中字段顺序要一致,在while循环里要对日期时间处理(用setDate),然后执行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(); //记录开始时间
Connection connDB2=null; //链接DB2数据库
Connection connOracle=null; //链接oracle数据库
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数据库成功!”);
connDB2=connectionDB2.getConnection();
//执行DB2数据库sql语句,此处并非固定代码
String
db2SQL=”SELECT ID,SENDNO,SENDTYPE,BRNUMBER
,SENDTIME,ALARMTIME,SENDCONTENT,ISSEND ,ELEALARMID from
DB2ADMIN.ET_SENDMESSAGEINFO”;
//执行oracle数据库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); //执行sql语句
resultSet=statement.getResultSet(); //获取DB2数据库的结果集
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(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数据库里提交事务
if(num>10000){
preparedStatement.executeBatch();
connOracle.commit();
num=0;
}
}
preparedStatement.executeBatch();
connOracle.commit();
} catch (Exception e) {
connOracle.rollback(); //oracle数据库事务回滚
e.printStackTrace();
}finally{
new CloseFunction().closeConnection(connOracle); //关闭oracle数据库,释放资源
new CloseFunction().closeConnection(connDB2); //关闭DB2数据库,释放资源
long endTime=System.currentTimeMillis(); //记录程序结束时间
System.out.println(“总的时间:”+(endTime-startTime)/1000+”秒”);
}
}
}
如何将Excel表格中的数据批量导入到db数据库中,求大神详细指点晚辈
1 :使用文本方式导入
1 )、将埋槐 EXCEL 导出具有标准格式符的文本文件,例如以逗号分隔的文本文件
2 )、在 db2 的命令行处理器中,连接上数据库,用 import 语句导入,语句如下:
import from table.txt of del modified by coldel, insert into table
同理,导出命令:
export to table.txt of del modified by coldel, select * from table
2:使用csv文件 方式导入
1)、把excel文件另存为table.csv文件
2)、在db2的命令行处理器中,连接上数据库,用import 语句导入
import from “卖租d:\table.csv” OF DEL messages “d:\msg.out” INSERT INTO table
以上整理来自于互弯配友联网
读取excel内容然后插入到数据库
关于db2导入数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
香港服务器首选后浪云,2H2G首月10元开通。
后浪云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。