将公司系统从SqlServer 2K移植到Oracle 10g中的简要总结
公司有一个系统是基于SqlServer 2k,现在,应客户要求,移植到Oracle 10g数据库。代码的扩展极其easy,三下五除二,搞定。就是 在将数据从SqlServer 2k导入到Oracle 10g数据库中时出现了一些问题。刚开始采用的方案是把表结构和数据导入到Sql脚本中,然后在 Oracle数据库中执行Sql脚本。这个过程涉及到数据库字段类型的转换问题,容易出错。后来采用使用SqlServer 2k的DTS 将数据从 SqlServer中导入到Oracle 10g中。工作就这么搞定了,为了方便以后数据类型的转换,方便以后做针对不同数据库的Sql脚本,我把 SqlServer 2k和Oracle 10g大部分数据类型都做了一下测试,当然现在只有SqlServer 2k和Oracle 10g数据对应关 系。不对应关系如下:
SqlServer 2k转换为Oracle 10g
列名 | SqlServer数据类型 | SqlServer长度 | Oracle数据类型 |
column1 | bigint | 8 | NUMBER(19) |
column2 | binary | 50 | RAW(50) |
column3 | bit | 1 | NUMBER(2) |
column4 | char | 10 | CHAR(10) |
column5 | datetime | 8 | DATE |
column6 | decimal | 9 | NUMBER(18) |
column7 | float | 8 | BINARY_DOUBLE |
column8 | image | 16 | BLOB |
column9 | int | 4 | NUMBER(10) |
column10 | money | 8 | NUMBER(19,4) |
column11 | nchar | 10 | NCHAR(10) |
column12 | ntext | 16 | NCLOB |
column13 | numeric | 9 | NUMBER(18) |
column14 | nvarchar | 50 | NVARCHAR2(50) |
column15 | real | 4 | BINARY_FLOAT |
column16 | smalldatetime | 4 | DATE |
column17 | smallint | 2 | NUMBER(5) |
column18 | smallmoney | 4 | NUMBER(10,4) |
column19 | sql_variant | BLOB | |
column20 | text | 16 | CLOB |
column21 | timestamp | 8 | RAW(8) |
column22 | tinyint | 1 | NUMBER(3) |
column23 | uniqueidentifier | 16 | BLOB |
column24 | varbinary | 50 | RAW(50) |
column25 | varchar | 50 | VARCHAR2(50) |
Oracle 10g 转换为SqlServer 2k
Oracle列名 | Oracle数据类型 | SqlServer列名 | SqlServer数据类型 | SqlServer数据长度 |
COLUMN1 | BINARY_DOUBLE | COLUMN1 | float | 8 |
COLUMN2 | BINARY_FLOAT | COLUMN2 | real | 4 |
COLUMN3 | BLOB | COLUMN3 | image | 16 |
COLUMN4 | CLOB | COLUMN4 | ntext | 16 |
COLUMN5 | CHAR(10) | COLUMN5 | nchar | 10 |
COLUMN6 | DATE | COLUMN6 | datetime | 8 |
COLUMN12 | NUMBER | COLUMN12 | numeric | 13 |
COLUMN13 | NVARCHAR2(10) | COLUMN13 | nvarchar | 10 |
COLUMN14 | RAW(10) | COLUMN14 | varbinary | 10 |
COLUMN15 | TIMESTAMP(6) | COLUMN15 | datetime | 8 |
COLUMN16 | TIMESTAMP(6) WITH LOCAL TIME ZONE | COLUMN16 | datetime | 8 |
COLUMN17 | TIMESTAMP(6) WITH TIME ZONE | COLUMN17 | datetime | 8 |
COLUMN18 | VARCHAR2(10) | COLUMN18 | nvarchar | 10 |
COLUMN7 | INTERVAL DAY(2) TO SECOND(6) | COLUMN7 | nvarchar | 30 |
COLUMN8 | INTERVAL YEAR(2) TO MONTH | COLUMN8 | nvarchar | 14 |
COLUMN9 | LONG | COLUMN9 | ntext | 16 |
COLUMN10 | LONG RAW | COLUMN10 | image | 16 |
COLUMN11 | NCLOB | COLUMN11 | ntext |
我们在做数据库移植设计的时候,完全DIY,可以考虑设计可扩展组件完成这种数据库表、列等对应关系的转换工作,那么以后再做系统移植中数据导入时就一劳永逸了。现在也没有时间做这种工作,不过感觉这还是挺有意义的一项工作。
在 转换过程中,出现了另一个问题,就是如果SqlServer 2k 中的表名含有小写,那么在导入到Oracle 10g后,需要修改表名,否则Sql语 句会执行失败。(导入后表名多了引号) 比如SqlServer 2k有一个表test,导入到Oracle 10g后显示的表名仍然为test,但是如 果你要查询test表中的数据时,按照正常情况下,你只用输入select * from test即可,可是现在却变成 select * from "test"。通过Oracle 10g的维护系统进入修改表名时,表名显示为带有引号的-"test"。出现这个问题,因 为表不是很多,所以我们将SqlServer 2k的表名都改为了大写,或者在Oracle中将表名改为大写,就ok了,需要注意这些细节。 Oracle 10g导入到SqlServer 2k中没有出现问题。
相关推荐
适用于delphi,C++的DBEXPRESS数据库连接引擎,本身的版本是6.23,在安装开发工具后,直接运行安装程序可方便快捷的安装开发工具里。开发的程序只需要和包含相应的DLL文件即可保持数据连接,勿需再安装庞大的数据库...
### Oracle到SQL Server存储过程语法转换详解 在数据库迁移项目中,从Oracle迁移到SQL Server是一种常见的场景。本文旨在提供一份详细的指南,帮助开发者更好地理解这两种数据库系统在存储过程方面的语法差异,并...
- **数据导出**: 使用 SQL Server 的 Import and Export Data 功能进行数据导出。 **B. 数据导出** 1. **选择数据源**: 在 SQL Server 中选择数据源为 Microsoft OLE DB Provider for SQL Server。 2. **指定...
常见的工具有Oracle Data Pump、SQL Server Import and Export Wizard、SSMA (SQL Server Migration Assistant) for Oracle等。这些工具可以帮助简化迁移过程,减少手动工作量,并尽可能减少错误。 4. **Oracle ...
本资源"sqlserver2008链接ORACLE服务器驱动.rar"正是为了解决这个问题,提供了SQL Server 2008连接到Oracle数据库所需的驱动程序和安装指南。 首先,我们要明白的是,SQL Server 2008本身并不直接支持Oracle数据库...
- 接下来,使用SQL Server 2005的导入/导出向导(Import and Export Wizard)或Data Transformation Services (DTS)将数据从Oracle导入到SQL Server 2005。 - 在选择源提供程序时,应选择“Microsoft OLE DB ...
- **Sqlserver**、**Oracle**、**MySql**、**PostgreSql** 和 **SqlLite** 都提供了丰富的内置函数支持,包括数学、日期时间、字符串处理等多方面功能。 #### 五、分页 分页是数据库中常见的需求之一,不同的...
Oracle 和 SQL Server 是两种广泛应用的关系型数据库管理系统,它们在语法和功能上存在一定的差异。以下是对两者主要区别的一些详细说明: 1. **伪列 ROWNUM**: 在Oracle中,ROWNUM是一个伪列,用于获取结果集中...
在描述中提到的“根据不同字段的具体值查找数据库(SQL Server AND Oracle)的数据”,这是数据库查询的基础,涉及到SQL语言的使用。在SQL中,我们可以使用`WHERE`子句来根据特定字段的值筛选记录。例如,如果我们有...
Oracle Database Transactions and Locking Revealed provides much-needed information for building scalable, high-concurrency applications and deploy them against the Oracle Database. Read this short, ...
本文将深入探讨SQL Server、MySQL和Oracle这三种主流数据库系统中的分页查询实现方式。 首先,我们来看SQL Server。SQL Server提供了一种称为"TOP"的关键字来实现分页。例如,如果我们想获取第1页(假设每页有10条...
在SQL Server和Oracle数据库之间进行存储过程和函数的语法转换是一项常见的任务,特别是在数据库迁移或跨平台开发时。以下是一些关键的语法差异和转换规则: 1. **变量声明**: - SQL Server中,变量必须以`@`符号...
【标题】:初识SQL:SQL Server与Oracle之间的差异 【描述】:这份资料主要针对SQL初学者,尤其是从SQL Server环境转向Oracle的用户,详细介绍了两者在语法、功能和概念上的不同之处。 【标签】:SQL 【正文】: ...
在SQLServer与Oracle这两个不同的数据库管理系统中,编写高效的SQL语句是至关重要的,因为它直接影响到查询速度和资源利用率。以下是一些关于SQL写作注意事项的关键点: 一、查询参数(SARGs)规则: 在SQL Server...
《Professional ADO.NET 2: Programming with SQL Server 2005, Oracle, and MySQL》是一本深入探讨ADO.NET 2.0与SQL Server 2005、Oracle和MySQL数据库交互的专业书籍。这本书旨在帮助开发者掌握如何高效、稳定地...
@ConfigurationProperties(prefix = "spring.datasource.sqlserver") public class SqlServerDataSourceConfig { // properties... @Bean(name = "sqlServerDataSource") public DataSource getDataSource() { ...
当组织内部使用不同的数据库管理系统(DBMS),如SQL Server和Oracle,可能需要一个数据库访问另一个数据库中的数据。本文档将探讨在Microsoft SQL Server环境下访问Oracle数据库的不同方法和技术,包括使用OLE DB...
本篇文章将详细讲解SQL和Oracle数据库的备份及还原方法,特别关注Oracle中的exp/imp工具。 Oracle的exp/imp工具是早期的数据库导出和导入工具,它们主要用于数据的迁移、表空间的转移以及逻辑备份。虽然随着技术的...