惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
Recent Announcements
Recent Announcements
IT之家
IT之家
人人都是产品经理
人人都是产品经理
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
大猫的无限游戏
大猫的无限游戏
U
Unit 42
罗磊的独立博客
博客园 - Franky
WordPress大学
WordPress大学
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
M
MIT News - Artificial intelligence
SecWiki News
SecWiki News
V
Vulnerabilities – Threatpost
P
Privacy International News Feed
P
Palo Alto Networks Blog
F
Fortinet All Blogs
P
Proofpoint News Feed
博客园 - 叶小钗
C
CERT Recently Published Vulnerability Notes
T
Tor Project blog
Spread Privacy
Spread Privacy
S
Securelist
C
Cisco Blogs
I
Intezer
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Cyberwarzone
Cyberwarzone
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy & Cybersecurity Law Blog
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Engineering at Meta
Engineering at Meta
S
Schneier on Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
GbyAI
GbyAI
T
Troy Hunt's Blog
T
Threatpost
博客园 - 司徒正美
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog
AWS News Blog
AWS News Blog
T
The Blog of Author Tim Ferriss
G
GRAHAM CLULEY
N
Netflix TechBlog - Medium
酷 壳 – CoolShell
酷 壳 – CoolShell
Google DeepMind News
Google DeepMind News
Know Your Adversary
Know Your Adversary
S
SegmentFault 最新的问题

博客园 - 阿修罗一平

IIS部署WCF出现的各种问题汇总 Infragistics控件的工具栏注册 NUnit的使用中可能遇到的问题 Linq备忘 Nihibernate的重要知识点 Devexpress使用记录 使用List数据集合,利用DevExpress.XtraReports开发Master-Detail报表 PDA访问WCF PDA(WinCE)项目开发中遇到的问题及解决方法总结 Grid控件绑定bindingSource后在新增行时设置Cell的初始值 “BindingSource绑定单个实体对象后在代码中赋值无效和无法显示”的解决方法 sqlservier2005转成sqlserver2000中出现的问题(WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) 项目考虑因素及解决方案(.net) 设计模式在工作中的应用(三) 设计模式在工作中的应用(二) 设计模式在工作中的应用(一) NHibernate示例 Remoting服务集成到IIS的简单总结 关于Remoting服务启动和停止的简单总结
将公司系统从SqlServer 2K移植到Oracle 10g中的简要总结
阿修罗一平 · 2007-08-02 · via 博客园 - 阿修罗一平

        公司有一个系统是基于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 16

     我们在做数据库移植设计的时候,完全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中没有出现问题。