sql server2005 中的表导入到oracle数据库

1启动sql server2005----点击数据库名称邮件弹出提示框----选择“任务”中的”导出数据“----弹出对话框,下一部-----

 server name 选主机名

database 选数据库名

然后点属性:

data source:选择客户端的监听名称

用户名:选择oracle,要导入的用户名

导入完成

 

在导入的时候要注意:


--在sqlserver下处理需要导出的数据库
1、        执行以下sql,查出所有‘float‘类型的表名和字段名,将float类型改为decimal(18,4).
select 表名=d.name,字段名=a.name,类型=b.name FROM syscolumns a
left join systypes b on a.xtype=b.xusertype
inner join sysobjects d on a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties'
where b.name in ('float')
order by d.name;

2、        使用下面sql语句查出MS-SQL中数据库的所有用户表中字段在ORACLE属于内部关键词的表名及字段名并修改,此修改需通知开发看是否需要修改相关程序
select 表名=d.name,字段名=a.name FROM syscolumns a
inner join sysobjects d on a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties'
where a.name in ('NUMBER','LEVEL','ROW','rowNum','rows','mode') order by a.id,a.colorder

3、        查询类型为text字段并且值为空的设置为'-'否则导出时会报错误(该语句查询出一组sql语句);将查询出来的一组sql语句全部拷贝出来并全部执行。
select 'update '+ d.name +' set '+ a.name +'=''-'' where '+ a.name +' like '''''
FROM syscolumns a left join systypes b on a.xtype=b.xusertype
inner join sysobjects d on a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties'
where b.name in ('TEXT') order by d.name

4、        执行下列sql将所有数据表的列名大写。

/*修改列名大写*/
drop procedure change_to_decimal184
go
/*创建存储过程*/
create procedure change_to_decimal184
as
/*声明变量*/
declare @tableName varchar(128),
        @columnName varchar(128)
/*声明游标*/
declare @cursorVar Cursor
/*给游标赋值*/
set @cursorVar=Cursor For
select obj.name,upper(col.name) from  syscolumns col,sysobjects obj where obj.xtype='U' and obj.id=col.id;
/*打开游标*/
Open @cursorVar
/*取一条数据赋给变量*/
Fetch Next From @cursorVar
Into @tableName,@columnName
/*声明执行语句变量*/
Declare @executeSql nvarchar(2000)

While(@@FETCH_STATUS=0)
Begin
/*获得要执行的SQL语句*/
set @executeSql=N'exec  sp_rename '''+@tableName+'.'+@columnName+''','''+@columnName+'''';
                execute sp_executesql @stmt=@executeSql
/*取下一条数据*/   
                Fetch Next From @cursorVar
                Into @tableName,@columnName
End
/*关闭游标*/
Close @cursorVar
/*释放资源*/
Deallocate @cursorVar
/*返回*/
Return
go
/*执行存储过程*/
execute change_to_decimal184

5、        执行下列sql将所有表名大写

/*修改表名大写*/
drop procedure change_to_decimal184
go
/*创建存储过程*/
create procedure change_to_decimal184
as
/*声明变量*/
declare @tableName varchar(128),
        @uptableName varchar(128)
/*声明游标*/
declare @cursorVar Cursor
/*给游标赋值*/
set @cursorVar=Cursor For
select obj.name,upper(obj.name) from  sysobjects obj where obj.xtype='U' and name!='dtproperties';
/*打开游标*/
Open @cursorVar
/*取一条数据赋给变量*/
Fetch Next From @cursorVar
Into @tableName,@uptableName
/*声明执行语句变量*/
Declare @executeSql nvarchar(2000)

While(@@FETCH_STATUS=0)
Begin
/*获得要执行的SQL语句*/
set @executeSql=N'exec  sp_rename '''+@tableName+''','''+@uptableName+'''';
                execute sp_executesql @stmt=@executeSql
/*取下一条数据*/   
                Fetch Next From @cursorVar
                Into @tableName,@uptableName
End
/*关闭游标*/
Close @cursorVar
/*释放资源*/
Deallocate @cursorVar
/*返回*/
Return 0
go
/*执行存储过程*/
execute change_to_decimal184


--在oracle下处理
1.        以system用户登录,建立表空间和用户并赋予权限
如--创建表空间
create tablespace ST10005(表空间名)
datafile 'D:\oracle\db\ST10005.ora' (数据文件存放地点 D:\oracle\db\文件夹要先存在)
size 500M
default storage
(initial 200m
next 50m
minextents 20
maxextents 500)
online;

--创建用户 (指定默认表空间 和 临时表空间 指定连接状态)
CREATE USER ST10005(用户名) PROFILE DEFAULT IDENTIFIED BY ep(密码) DEFAULT
TABLESPACE ST10005(表空间名) TEMPORARY TABLESPACE TEMP ACCOUNT UNLOCK;

--为用户授权
grant connect,resource,dba to ST10005(用户名);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值