mysql转oracle注意事项
1.mysql中有自增長,oracle用新建sequence代替。
2.在實(shí)體類的id要指定相關(guān)的sequence
?? @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_pl_policy")??? ?
?? @SequenceGenerator(name="seq_pl_policy",allocationSize=1,initialValue=1, sequenceName="seq_pl_policy")
3.注意數(shù)據(jù)庫中的數(shù)據(jù)類型改動,比如text轉(zhuǎn)為clob等
4.注意數(shù)據(jù)庫中列的名稱中不能含有oracle中的關(guān)鍵詞,如:size,date等
5.在sql代碼中,oracle比mysql嚴(yán)格;例子如下:
mysql中可以寫group by createtime desc而oracle只能寫group by createtime。
mysql中可以出現(xiàn)size和date作為別名,但oracle會報(bào)錯。
mysql中可以使用“||”,而oracle只能用or。
mysql中別名可以是 AS 'highLevelNum' ,而oracle只能是AS? highLevelNum
mysql中在select中可以出現(xiàn)非group by 中的列,而oracle中必須是只能是group by中的列。如:
?????? mysql中:select t.c_eve_level as evelevel,to_char(t.c_create_time,"yyyymmddhh24") as evetime,sum(t.c_match_num) as evematch
from t_eve t
where 1 = 1 and (t.c_from_email <> NULL or t.c_from_email <> '')
group by t.c_eve_level,t.c_create_time
order by t.c_create_time desc
oracle中:select t.c_eve_level as evelevel,to_char(t.c_create_time,"yyyymmddhh24") as evetime,sum(t.c_match_num) as evematch
from t_eve t
where 1 = 1 and (t.c_from_email <> NULL or t.c_from_email <> '')
group by t.c_eve_level,to_char(t.c_create_time,,"yyyymmddhh24")
order by to_char(t.c_create_time,,"yyyymmddhh24") desc
6.sql腳本中用到的函數(shù),mysql和oracle也不同。
mysql中用ifnull,oracle用nvl或decode。
mysql中用left,oracle用substr。
mysql中用if,oracle可以用decode。
mysql中用dateformat,oracle可以用to_char。
mysql可以用日期和相同格式的字符串比較,而oracle只能用轉(zhuǎn)成相同類型再比較。
7.在oracle中如果一個事務(wù)中執(zhí)行的sql較多,就會報(bào)錯。可以在配置文件id為sessionFactory中添加<prop key="hibernate.jdbc.batch_size">50</prop>
轉(zhuǎn)載于:https://www.cnblogs.com/shz365/p/7650857.html
總結(jié)
以上是生活随笔為你收集整理的mysql转oracle注意事项的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【最短路】流星雨
- 下一篇: 让Win10文件管理器的详细信息窗格显示