SELECT col1, col2... FROM B.dbo.B1
col1,col2...就是需要插入的字段 不要写入自动增长列的字段就可以了
查看并导出SQL Server 2000数据表中字段的注释信息:此示例为导出某个表注释的语句:(表名是bbs_bank_log)
SELECT sysobjects.name AS 表名, syscolumns.name AS 列名,
systypes.name AS 数据类型, syscolumns.length AS 数据长度, CONVERT(char,
sysproperties.[value]) AS 注释
FROM sysproperties RIGHT OUTER JOIN
sysobjects INNER JOIN
syscolumns ON sysobjects.id = syscolumns.id INNER JOIN
systypes ON syscolumns.xtype = systypes.xtype ON
sysproperties.id = syscolumns.id AND
sysproperties.smallid = syscolumns.colid
WHERE (sysobjects.xtype = 'u' OR
sysobjects.xtype = 'v') AND (systypes.name <>'sysname')
--and CONVERT(char,sysproperties.[value]) <>'null' --导出注释不为'null'的记录
--AND (sysobjects.name = 'bbs_bank_log') --逐个关联表名,可以用or连接条件
ORDER BY 表名
注意事项:
上文中的语句是导出某个表的所有注释,如果你需要简单的列出表的所有注释,语句如下:
SELECT CONVERT(char, [value]) AS Expr1 FROM sysproperties
sysobjects是系统对象表,syscolumns是系统字段信息表,systypes是系统类型表。通过字段的ID和sysproperties(系统注释属性表)关联,即可读出注释信息。
查看并导出SQL Server 2005以上数据表中字段的注释信息:
select minor_id,value from sys.extended_properties where major_id=数据表在数据库中的ID Order By minor_id
SqlServer2005导出数据到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(用户名)
--用sqlserver2005自带的导入工具将数据导入到oracle
1)在要导出的数据库上点击鼠标右键,选择“任务”》“导出数据”,
2)依次点击下一步,在“选择数据源”页面填写相应选项,如下图
3)在“选择目标”页,目标栏选择“oracle Provider for OLE DB”,点击属性会d出个数据链接属性的对话框;如下图
数据源一栏填写的是用PLSQL连接时的database;用户名一栏都要用大写的;同时要选中“允许保存密码”选项。
4)接着下一步直到选择源表和源视图,选择要导入的表,注意:一次不能选太多的表,否则会d出一个警告,如d出了警告(如下图),就要少选几个表,如果不d出警告,就下一步直到完成。
5)重复1-4步 *** 作几次,将所有的表都导入进去。
--导入完成后,还需执行以下几步 *** 作
1.检查表的数目是否正确
sqlserver下执行 :
select count(*) from sysobjects obj where obj.xtype='U' and name!='dtproperties'
oracle下执行 :select count(*) from user_tables
2.执行sql
update CFG_MODEL_PARAM SET ORDERSQL=' ' WHERE ordersql is null
3.执行文件中的sql建视图
4.执行sql建主键以及外键。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)