最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

从mysql转换到oracle数据库

来源:动视网 责编:小OO 时间:2025-10-02 01:02:44
文档

从mysql转换到oracle数据库

从mysql转换到oracle数据库最近做了几个项目,我对项目的要求(有些也是客户的要求)都是既要能用mysql数据库,又要能用oracle数据库,开发时尽量用mysql,等到发布时要求两者都能适应。因为两种数据库还是许多具体的应用有些不同,而我们开发中采用的技术又有各种,所以基本上都是采用手动去转换,具体转换过程如下:一、分表结构及表数据两次导出。一次导出去转换之后导入oracle中比较麻烦,所以我们一般在mysql导出时将导出分成个结构及个数据两次导出。导出之后将个结构语句修改,具体修改如
推荐度:
导读从mysql转换到oracle数据库最近做了几个项目,我对项目的要求(有些也是客户的要求)都是既要能用mysql数据库,又要能用oracle数据库,开发时尽量用mysql,等到发布时要求两者都能适应。因为两种数据库还是许多具体的应用有些不同,而我们开发中采用的技术又有各种,所以基本上都是采用手动去转换,具体转换过程如下:一、分表结构及表数据两次导出。一次导出去转换之后导入oracle中比较麻烦,所以我们一般在mysql导出时将导出分成个结构及个数据两次导出。导出之后将个结构语句修改,具体修改如
从mysql转换到oracle数据库

最近做了几个项目,我对项目的要求(有些也是客户的要求)都是既要能用mysql数据库,又要能用oracle数据库,开发时尽量用mysql,等到发布时要求两者都能适应。因为两种数据库还是许多具体的应用有些不同,而我们开发中采用的技术又有各种,所以基本上都是采用手动去转换,具体转换过程如下:

一、分表结构及表数据两次导出。一次导出去转换之后导入oracle中比较麻烦,所以我们一般在mysql导出时将导出分成个结构及个数据两次导出。导出之后将个结构语句修改,具体修改如下:

二、对表的修改:

0、去掉`,`这个是mysql的特殊标示符,转换前要去掉

1、将所有的text替换成varchar2(4000)。有些转换工具将text是转换成blob或clob,我觉得那样不好,一般还是转换成varchar2(2000)或varchar2(4000)比较好。虽然采用spring或oracle10g可以clob当作string去处理,但是我觉得一般情况下还是转换成varchar2比较好,如果字段内容确实需要更长(varchar2最长是4000),在这种情况下采用clob就比较好了。

2、将所有的varchar替换成 varchar2 。

3、将tinyint(1)替换成number(1)。

4、将int(4)替换成number(4)。

5、去掉auto_increment选择项。oracle中没有自增属性,所以要去掉。

6、将NOT NULL default ''替换成default '' NOT NULL。关键是这两个的顺序不能错,也不知道为什么,实际中总结出来的。

7、将ON DELETE CASCADE ON UPDATE CASCADE替换成ON DELETE CASCADE ON UPDATE CASCADE。

8、将外键前的KEY cq_formid (cq_formid)去掉。

9、将CONSTRAINT 0_99 FOREIGN改成CONSTRAINT fk_99 FOREIGN。

10、将mediumblob转换成blob。

11、将所有非主键的not null去掉。

12、将外键全部移到最后(在数据导完之后再执行)。

三、对数据修改:

0、去掉`,`这个是mysql的特殊标示符,转换前要去掉,在做个结构转换时也要去掉。

1、\\'替换成''。\为mysql的转义字符,而oracle的转义字符为单引号。

2、 替换成 。这种是在执行sql插入语句一些特殊字符被oracle当做参数,这种我还没有找到好的处理方法,一般就还是输入相应的字符吧。有谁知道更好的处理方法可以告诉我一下。

3、,'',替换成,''''。这也是需要转义引起的。

在程序处理中mysql与oracle数据库还有些具体的不同,具体的不同情况如下:

mysql与oracle的不同:

1、mysql自动增量。oracle中没有自动增量,一般采用序列去实现类似功能,但是需根在程序中特殊处理(采用hibernate时不需要特殊处理)。

2、limit。在mysql中一般采用limit去实现分页功能,而oracle中一般采用rownum去实现分页。

3、date。两种数据库对date的处理也不一样,mysql中更加灵活吧。

4、LEFT函数。oracle中没有相同的函数,我一般自定义一个left函数去实现mysql相同的功能,那样就不用去修改程序了。

oracle中增加:

create or replace function LEFT(String1 in varchar2, pos in integer)

  return varchar2 is

begin

  return(substr(String1, 0, pos));

end LEFT;

/

5、空与空串。mysql中空与空串是两个不同的东西,而在oracle中将null与空串做了同样的处理,这也是在程序中需要注意的于方。

6、rs.isLast()。当数据库为mysql在Connection.prepareStatement(str1);可用,而在oracle中必须Connection.prepareStatement(str1,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)才能使用rs.isLast(),一般两种情况都采用后面的就可以了吧。

7、在oracle中update fieldsdisplaymode f set f.fdm_displaycontent=Translate(f.fdm_displaycontent,'\\'','''' );这是将insert语句中的\\'全部替换成'',还是一种语义的转换。

8、sysdate。在mysql中采用sysate()而在oracle中采用的是sysdate,两个稍有不同,也可以在oracle中定义函数去处理。

文档

从mysql转换到oracle数据库

从mysql转换到oracle数据库最近做了几个项目,我对项目的要求(有些也是客户的要求)都是既要能用mysql数据库,又要能用oracle数据库,开发时尽量用mysql,等到发布时要求两者都能适应。因为两种数据库还是许多具体的应用有些不同,而我们开发中采用的技术又有各种,所以基本上都是采用手动去转换,具体转换过程如下:一、分表结构及表数据两次导出。一次导出去转换之后导入oracle中比较麻烦,所以我们一般在mysql导出时将导出分成个结构及个数据两次导出。导出之后将个结构语句修改,具体修改如
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top