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

1、处理自增数据类型MYSQL有自增数据类型,插入记录时无需操作该字段,会自动获取数据值。
ORACLE没有自增数据类型,需要生成一个自增序列号,当插入一条记录时,必须将序列号的下一个值赋给该字段。
CREATESEQUENCE序列号名称(最好是表名+序列号符号)INCRMENTBY1STARTWITH1MAXVALUE99999CYCLENOCACHE;最大值由字段的长度决定,如果自动定义增量序列号(6),则最大值为999999。
INSERT语句为:NumbernameNEXTVAL2串行来处理MYSQL中的单引号,可以双引号用于包裹字符串,而在Oracle中只能使用单引号。
在插入或修改字符串之前,必须替换单引号:将所有出现的单引号替换为单引号。
3、处理翻页的SQL语句MYSQL处理翻页的SQL语句比较容易,在PHP中使用LIMIT来开始位置并记录数量,也可以使用SEEK来确定结果集的位置。
ORACLE对中继SQL语句的处理比较复杂。
每个结果集只有一个ROWNUM字段来指示其位置,并且只能使用ROWNUM80。
下面是解析后较好的ORACLE迁移SQL语句(ID为unique关键字的字段名):语句1:SELECTID,[FIELD_NAME,...]FROMTABLE_NAMEWHEREIDIN(SELECTIDFROM(SELECTROWNUMASNUMROW,IDFROMTABLE_NAMEWHERE条件1ORDERBY条件2)WHERENUMROW>80ANDNUMROW<100>80ANDNUMROW<100>INSERT和UPDATE期间可操作的最大字符串长度小于或等于4000个单字节。
如果要插入更长的字符串,请考虑对该字段使用CLOB类型,借用ORACLE附带的DBMS_LOB包中的方法。

在插入修改记录之前,必须进行非空和长度判断,对于不能为空的字段值和超过长度的字段值必须发出警告并返回到上一次操作。
5.处理日期字段。
MYSQL中的日期字段分为DATE和TIME。
ORACLE日期字段只包含DATE,其中包含年、月、日、时、分、秒信息。
分钟到秒,或使用一系列将其转化为历史。
编写函数TO_DATE('2001-08-01','YYYY-MM-DD')年-月-日2.4小时:分:秒的格式为YYYY-MM-DDHH24:MI:SSTO_DATE()有日期有多种格式。
可以参考ORACLEDOC。
日期字段转换为字符串函数TO_CHAR('2001-08-)。
01','YYYY-MM-DDHH24:MI:SS')日期字段的计算差异很大。
MYSQL使用DATE_FIELD_NAME>SUBDATE(NOW(),INTERVAL7DAY)查找距离当前时间7天的时间。
ORACLE从当前时间查找7天并使用DATE_FIELD_NAME>SYSDATE-7;6、处理MYSQL中的非空字段也有空内容在ORACLE中,如果指定了非空字段,则不允许有空内容。
根据MYSQL的NOTNULL定义ORACLE表结构,导入数据时会出错。
因此,在导入数据时,需要判断空字符,如果是空或者空字符,则需要将其改为空格字符串。
7、字符串的模糊比较。
在MYSQL中,可以使用'%string%'这样的字段名,在ORACLE中,也可以使用'%string%'这样的字段名,但是这种方法不能使用索引,而且速度不快。
使用字符串比较函数。
instr(fieldname,'string')>0将得到更准确的搜索结果。
8、程序和功能中,请注意完成数据库操作工作后下发结果集和指标。

如何使用Mysql连接oracle数据库

输入sqlplus,然后当提示输入用户名时,输入user/password@database即可。
然后出来sql>,就可以输入各种语句了。

如何将mysql中的数据导入到oracle数据库中

1.运行MySQLMigrationToolkit,“Next”到“SourceDatabase”并选择DatabaseSystem中的OracleDatabaseServer。
如果您是第一次使用它,系统会要求您加载ojdbc14.jar驱动程序。
加载驱动程序后,界面将移至下一个窗体。
填写Oracle数据库连接信息,然后按“下一步”继续。
2.在TargetDatabase中,默认的DatabaseSystem是MySQLServer,在ConnectionParameters中填写对应的MySQL数据库连接信息,然后按“Next”继续。
3.执行数据库连接测试。
通过测试后,按“下一步”导航至SourceSchemataSelection。
选择要迁移的架构,然后按“下一步”继续。
4、在ObjectTypeSelection中,点击Detailed按钮,从下方左侧列表中选择不迁移的表,将其放入右侧列表中,即左侧列表中剩余的表将进行数据迁移。
选择后,点击“下一步”继续。
5.在ObjectMapping的MigrationoftypeOracleSchema中,如果要设置参数,请单击SetParameter按钮。
如果默认数据库表是UTF8,则选择Multilingual;如果默认数据库表是GBK,则必须选择UserDefined,并在下面填写charset=gbk,collat​​ion=gbk_general_ci。
要在MigrationoftypeOracleTable中设置参数,请单击“SetParameter”按钮。
如果默认数据库表是UTF8,选择Dataconsistency/multilingual;如果默认数据库表是GBK,则必须选择Userdefine,并在下面填写addAutoincrement=yes,charset=gbk,collat​​ion=gbk_general_ci,engine=INNODB。
选择后,点击“下一步”继续。
6.进入手动编辑,您可以在其中编辑建表脚本。
由于Oracle和MySQL的语法规则不同,通常需要调整脚本的数据类型和默认值。
例如,Oracle通常为时间戳数据设置默认的sysdate,但MySQL不识别这一点。

在Filter中选择ShowAllObjects,然后在MigeratedObjects中选择要编辑脚本的表,然后单击左下角的Advanced来编辑脚本。
编辑完成后,单击右侧的“应用更改”按钮保存并按“下一步”继续。
7.然后完全单击“下一步”。
如果没有错误,就可以将指定表的数据导入到MySQL中。
如果出现错误消息,您需要返回手动编辑并再次编辑脚本。
需要补充的是,导入大容量数据,尤其是CLOB数据时,可能会出现异常:“Packetslargerthanmax_allowed_pa​​cketarenotallowed”。
事实上,MySQL数据库有一个max_allowed_pa​​cket系统参数,其默认值为1048576(1M)。
您可以通过以下语句在数据库中查询其值:showVARIABLESlike'%max_allowed_pa​​cket%';参数方法是找到mysql文件夹下的my.ini文件,在my.ini文件中添加一行[mysqld]:max_allowed_pa​​cket=16777216。
重新启动MySQL。
这将允许您导入不大于16MB的数据,可以根据需要调整该值。