数据库迁移到sybase时的Sql脚本修改

去掉drop语句后的cascade constraints
比如:drop table tbl1 cascade constraints;

改为:drop table tbl1;

去掉语句之间的分号
Sybase不允许Sql语句以分号结束。比如:




长整型由number(19)改为numeric(19,0);varchar2改为varchar
用到序列号的主键加上identity关键字,并且字段的数据类型只能是标度为0的numeric。当作为某表的外键时,字段类型要一致
比如:

短整型的主键:q_id       numeric(5,0)    identity   not null,

整型的主键:w_id         numeric(10,0)    identity       not null,

长整型的主键:e_id        numeric(19,0)    identity       not null,

一定要表明字段是否为null
允许为空的字段一定要写null,否则默认该字段不为空。

比如:w_type             VARCHAR(40)      default -1      null,

INSERT语句所有表名和字段名都按建表时的名称写,区分大小写。不要给标志为identity 的主键赋值,sybase会自动从1开始按顺序增1



修改hbm
Hbm文件里有个schema="public",改成schema="用户名"

修改java中的sql语句
1) top10的语句

在oracle中可以使用:

select * from (select * from   tble order by tt_id desc) where rownum<=10

   得到tble 表中id最大的10条记录

在sybase中改成:

set rowcount 10 select * from tble order by model_id desc

2) 四舍五入的函数

Trunc由round(返回指定数字舍入到给定的小数位数后所得的值)替代。参考下面的资料:


3)






还有:

1. 关于自增长id的问题,如果需要手动插入部分初始数据,那么应该在先将identiy_insert 设为on

    set insert_identity   tblname on

    而且一个session中只能有一个表是设为on的,如果有多个表,还得off 掉当前,再打开其它的.

2.    sybase的命令终结符是go,所以在一定数量的语句后最好加一个go

3.   用到SET ROWCOUNT(类似top 10)的注意了,这个命令马上生效并且影响当前会话,也就是同一个会话中SET ROWCOUNT会影响所有查询语句,解决方法:在该条语句后加SET ROWCOUNT 0移除这个限制

SET ROWCOUNT 10

select * from fnms_param_infor

SET ROWCOUNT 0


4. 调整字符集

      (1) 调整服务器字符集
所有的Server要求nocase 的utf8,请按如下方式完成:
在config server当中选择language>default character/sort然后保存,重启服务.可能不会成功,不过重起机器就可以了.
(2 )调整客户端字符集
客户端的character改为cp936

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值