sqlserver2005数据导出问题

sqlserver2005数据导出问题,第1张

INSERT INTO A.dbo.A1 (col1, col2...)

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建主键以及外键。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9865203.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存