数据库移植注意事项
2024-07-21 02:06:41
供稿:网友
1.1 数据库移植注意事项1.1.1 取前n条记录
sql server:
select top n * from xtable
oracle:
select * from xtable where rownum <=n
db2:
select * from xtable fetch first n rows only
1.1.2 取当前日期
sql server:
select getdate()
oracle:
select sysdate from dual
db2:
select current timestamp from sysibm.sysdummy1
1.1.3 连接字符串
sql server:
select 'hello'+'toone'
oracle:
select 'hello'||'toone' from dual
db2:
select 'hello'||'toone' from sysimb.sysdummy1
1.1.4 空值转换
sql server:
select userid,username,isnull(email,'0') from auth_user
oracle:
select userid,username,nvl(email,'0') from auth_user
db2:
select userid,username,value(email,'0') from auth_user
1.1.5 类型转换
sql server:
select convert(varchar,getdate(),20)
oracle:
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual
db2:
select varchar(current timestamp) from sysibm.sysdummy1
注1:
■sql server中转换日期格式改变style参数:20 ;
■oracle中转换日期格式改变格式化参数:yyyy-mm-dd hh24:mi:ss
‘yyyy’、’mm’、’dd’、’hh12’、’hh24’、’mi’、’ss’等;
■db2中转换日期格式改变系统常量:current timestamp
‘current date’、’current time’等;
注2:
■sql server数据类型改变“数据类型参数”:int、varchar等;
■oracle数据类型改变函数:to_char()、to_date()、to_number()等;
■db2数据类型改变函数:varchar()、int()、date()、time()等;
1.1.6 取值判断
sql server:
select caseconvert =
case when g.master_type ='system' then '管理员'
when g.master_type ='roletype' then '特殊角色'
else '普通用户'
end
from global_code g
oracle:
select case g.master_type
when 'system' then '管理员'
when 'roletype' then '特殊角色'
else '普通用户'
end
as caseconvert
from global_code g
db2:
select case g.master_type
when 'system' then '管理员'
when 'roletype' then '特殊角色'
else '普通用户'
end
as caseconvert
from global_code g
1.1.7 位置
sql server:
select charindex('e','abcdef')
select patindex('%e%','abcdef')
oracle:
select instr('abcdef','e') from dual
db2:
select locate('e','abcdef') from sysibm.sysdummy1
1.1.8 其他函数
sql server
oracle
db2
长度
len()
length()
length()
取子串
substring()
substr()
substr()
1.2 附1.2.1 db2v8.1常用命令
■ 创建数据库
在服务器上执行
db2 create db oatemp
■ 删除数据库
在服务器上执行
db2 drop db oatemp
■ 创建表空间
db2 "create user temporary tablespace userspace1 managed by system using (' userspace1')"
■ 启动数据库
切换用户
su – db2inst1
启动数据库:
db2start
■ 关闭数据库
切换用户
su – db2inst1
关闭数据库
db2stop [force]
■ 创建远程管理节点
进入 db2命令窗口
db2 catalog tcpip node asnode remote 10.1.22.176 server 50000
db2 catalog db oadb2 as oadb2 at node asnode
■ 连接数据库
db2 connect to oadb2 user db2inst1 using ibmdb2
■ 关闭数据库连接
db2 terminate
■ 执行脚本
db2 -td! -vf ioa2.db2 -z info.log
■ 导出脚本
db2look -d oadb2 -i db2inst1 -w ibmdb2 -e -o putsql.db2 -t auth_user
db2look -d oadb2 -i db2inst1 -w ibmdb2 -e -o putsq.db2
■ 查看正在使用的端口
netstat -a
■ 查询系统表
select count(*) from syscat.tables where tabschema=’db2inst1’
select count(*) from syscat.procedures where procschema=’db2inst1’
■ 常用命令
db2 "select 'drop talbe '||tabname from syscat.tables where t
abschema='db2inst1' and type='t'" >db2droptables.db2
db2 "select 'drop view '||tabname from syscat.tables where t
abschema='db2inst1' and type='v'" >db2dropviews.db2
db2 –vf db2droptables.db2 –z info.log
db2 "select username from auth_user fetch first 3 rows only"
■ 启动jdbc
db2jstrt jdbc applet server 6789 (在服务器上执行)