数据从MySQL迁移到Oracle 需要注意什么

上周,我那个朋友负责了一个数据迁移项目,从MySQL迁移到Oracle。
他说,这个过程中遇到了不少问题,以下是他的经验分享:
1 . 自动增长的数据类型:MySQL有自动增长,Oracle需要建立序列号。
他创建了序列号,并在插入时使用序列号的下一个值。

2 . 单引号的处理:MySQL中双引号可以包起字符串,Oracle只用单引号。
他必须替换单引号为两个单引号。

3 . 长字符串的处理:Oracle中INSERT和UPDATE时最大字符串长度小于等于4 000个单字节。
他考虑使用CLOB类型,并使用DBMS_LOB包。

4 . 翻页的SQL语句:MySQL用LIMIT,Oracle用ROWNUM,比较繁琐。

5 . 日期字段的处理:MySQL有DATE和TIME,Oracle只有DATE。
他使用SYSDATE进行日期字段的数学运算。

6 . 字符串的模糊比较:MySQL用LIKE,Oracle也用LIKE,但速度慢。
他考虑使用instr函数。

7 . 空字符的处理:Oracle非空字段不容许有空内容。
他判断空字符,并将其替换为空格字符串。

此外,他提到在将Oracle移植到MySQL时,需要注意以下问题:
1 . 大小写敏感:Linux系统下,MySQL大小写敏感,而Oracle不敏感。
他保持大小写一致,并使用双引号。

2 . 保留字:Oracle中保留字可以作为表名和字段名,MySQL中不行。
他使用反引号。

3 . 自动增长类型:Oracle使用sequence,MySQL使用auto_increment。
他转换sequence为auto_increment。

4 . 数据类型:Oracle有varchar2 、number,MySQL有varchar、numeric。
他替换数据类型。

5 . 索引长度限制:MySQL索引长度限制为1 000字节,Oracle宽松。
他调整索引或字段定义长度。

为了数据库兼容性,他建议遵守标准用法,避免数据库特有的用法,并统一大小写。

mysql语句转换为pgsql mysql语句转oracle

哎,这转换啊,得细看,我当年转换MySQL到Oracle,那叫一个头大。
首先,字符串引号,MySQL那单双引号随便用,Oracle就认单引号,双引号里头要躲猫猫,两个单引号成一对。
然后,MySQL的AUTO_INCREMENT,Oracle没这功能,得弄个SEQUENCE加TRIGGER,搞不定的时候,那心情,唉。
还有GROUP_CONCAT,Oracle里头得用WM_CONCAT,记得权限和类型,不然数据太大,哭都来不及。

MySQL到PGSQL,那也得小心,字符串引号还是单引号,单引号里头得转个弯。
自动增长,PGSQL用SERIAL,跟MySQL差不多。
GROUP_CONCAT,PGSQL里头得用STRING_AGG,不过数据类型,MySQL的TEXT在PGSQL里可能得换换口味,TEXT或者BYTEA,看具体用哪样。

工具嘛,OracleSQLDeveloper、MySQLMigrationToolkit,还有pgAdmin、DBConvert,这些都能帮忙,自动转转转,但得自己再过一遍,检查检查,别出啥岔子。

哎,说起来,转换这事儿,关键还得细心,别让数据跑了,那可就麻烦了。

MySQL转换成Oracle后,导入oracle数据库报错ORA-00955: 名称已由现有对象使用

ORA-009 5 5 : 名称冲突。
检查数据库名或表名是否重复。
用DBA权限重新导入。
确认Navicat缓存目录空间。
检查C:\temp路径空间是否不足。
Navicat版本5 .0.4 时遇到过。
重新安装Navicat 1 1 .0.1 0试试。
你自己掂量。