热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracletextdb2,从Oracle到DB2(一)

在实际的软件项目的开发过程中,特别是在企业的应用系统集成(EAI)项目中广大开发人员经常遇到不同关系型数据库之间的数据移植问题。笔者根据自己在工作中的不同数据库数据移

在实际的软件项目的开发过程中,特别是在企业的应用系统集成(EAI)项目中广大开发人员经常遇到不同关系型数据库之间的数据移植问题。笔者根据自己在工作中的不同数据库数据移植的经验经过通用化的java应用程序,演示把数据从Oracle数据库移植到DB2数据库中。

当然也可以应用其它支持JDBC和ODBC的关系型数据库。

本议题分为二部分:

一、Oracle和DB2数据库对象的异同

二、把数据从Oracle移植到DB2的Java应用程序的详细分析.详见

从Oracle 到DB2(二)

首先让大家快速的熟悉一下Oracle和DB2各个方面的异同

6376873_1.gif

上面的表格比较全面的对比了二者之间的区别,相信大家应该对Oracle 和DB2在整体上有了比较全面的理解,

好,下面就让大家对二个数据库的数据类型作详细的比较。

6376873_2.gif

下面我通过一些具体的实例来详细演示DB2和Oracle的区别:

一、日期

Oracle的日期用法:

Create table date_demo

( day_demo varchar2(25),

actualDate DATE,

detaildate DATE

);

插入数据

insert into date_demo values ('new years',to_date('01-02-2002','DD-MON-YYYY'),

to_date('01-02-2002','DD-MON-YYYY'),

...;

查看结果:

select * from date_demo;

day_demo actualDate detaildate

------------- -------------- ------------

new years 01-02-2002 01-02-2002

new years 01-02-2002 01-02-2002

......;

DB2的日期用法:

Create table date_demo

( day_demo char(25),

actualDate DATE,

detaildate DATE

);

插入数据

insert into date_demo values ('new years',('01-02-2002'),

to_date('01-02-2002'),

......;

查看结果:

select * from date_demo;

day_demo actualDate detaildate

--------------- -------------- ------------

new years 01-02-2002 01-02-2002

new years 01-02-2002 01-02-2002

......;

二、序列

Oracle的序列用法:

create table dep (deptno smallint not null,

deptname varchar2(36) not null,

mgrno char(6),

admrdept smallint not null,

location char(30));

create sequence dept_seq start with 200 increment by 1;

接着

insert into dept values

(dept_seq.nextval,'sales','smith',55,'downtown'),

(dept_seq.nextval,'marketing','wong',12,'midtown'),

(dept_seq.nextval,'accounting','fisher',300,'uptown');

select * from dept;

DB2的序列用法:

首先建表:

create table dept

(deptno smallint not null generated always as identity(start with 200,

increment by 1),

deptname varchar(36) not null,

location char(30));

接下来插入数据

insert into dept values

(default,'sales','smith,50,'downtown'),

(default,'marketing','wong',23,'midtown'),

(default,'accounting','fisher'200,'uptown');

查询结果:

select * from dept;

结果和Oracle 的一样。

三、截断大的数据表的内容

Oracle在截断大的数据表提供了一个函数truncate,通过语句truncate table tab_name来清空表中的内容并重组表的空间,truncate 是DDL语句不能回滚。

DB2不支持truncate语句,但提供另外二种方法来解决上面的问题。

(1) 在建表时加选项not logged initially ,当清空表时通过alter table [name] activate not logged initially with empty table

(2)首先在操作系统上建一个空文件empty.del,接着通过import命令import from empty.del of del replace into [table_name]来清空表中的数据并重组表空间。

以上是我在使用Oracle 和DB2数据库的过程中总结的不通点,更多的不通可以查阅相关的手册。

通过上面的介绍相信大家对Oracle和DB2的区别会有一定程度的了解,下一篇将在这一篇的基础上介绍如何把Oracle中的数据移植到DB2数据库中来。

-- This is a CLP script that creates an SQL procedure.

-- To create the SQL procedure using this script, perform the following steps:

-- 1. connect to the database

-- 2. issue the command "db2 -td@ -vf "

-- where represents the name of this script

--

-- To call this SQL procedure from the command line, perform the following steps:

-- 1. connect to the database

-- 2. issue the following command:

-- db2 "CALL median_result_set (20000)"

--

-- The sample "rsultset.c" demonstrates how to call this SQL procedure using

-- a CLI client application.

CREATE PROCEDURE median_result_set

-- Declare medianSalary as INOUT so it can be used in DECLARE CURSOR

(INOUT medianSalary DOUBLE)

RESULT SETS 2

LANGUAGE SQL

BEGIN

DECLARE v_numRecords INT DEFAULT 1;

DECLARE v_counter INT DEFAULT 0;

DECLARE c1 CURSOR FOR

SELECT CAST(salary AS DOUBLE) FROM staff

ORDER BY salary;

-- use WITH RETURN in DECLARE CURSOR to return a result set

DECLARE c2 CURSOR WITH RETURN FOR

SELECT name, job, CAST(salary AS DOUBLE)

FROM staff

WHERE salary > medianSalary

ORDER BY salary;

-- you can return as many result sets as you like, just

-- ensure that the exact number is declared in the RESULT SETS

-- clause of the CREATE PROCEDURE statement

-- use WITH RETURN in DECLARE CURSOR to return another result set

DECLARE c3 CURSOR WITH RETURN FOR

SELECT name, job, CAST(salary AS DOUBLE)

FROM staff

WHERE salary

ORDER BY SALARY DESC;

DECLARE CONTINUE HANDLER FOR NOT FOUND

SET medianSalary = 6666;

-- initialize OUT parameter

SET medianSalary = 0;

SELECT COUNT(*) INTO v_numRecords FROM STAFF;

OPEN c1;

WHILE v_counter <(v_numRecords / 2 &#43; 1) DO

FETCH c1 INTO medianSalary;

SET v_counter &#61; v_counter &#43; 1;

END WHILE;

CLOSE c1;

-- return 1st result set, do not CLOSE cursor

OPEN c2;

-- return 2nd result set, do not CLOSE cursor

OPEN c3;

END &#64;



推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • andr ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • 本文探讨了 Objective-C 中的一些重要语法特性,包括 goto 语句、块(block)的使用、访问修饰符以及属性管理等。通过实例代码和详细解释,帮助开发者更好地理解和应用这些特性。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
author-avatar
没有结果的爱请你收好
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有