`
foible
  • 浏览: 44804 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

动态批量导入视图,存储过程及触发器

    博客分类:
  • SQL
阅读更多

之前公司要做一个企业老版本升级工作,需要保留旧数据库的数据,并且升级到新数据库的结构,在之前的结构都已经完成,但新的数据库视图,存储过程及触发器太多,不想手动导出成sql文件再发送给企业,让企业升级。所以花了一天的研究,做了如下的方案:

 

1、新数据库名称为T65,数据库包含了存储过程,触发器,视图和表,但无数据(新客户使用的数据库,已存在)

2、写下面一段sql语句,如下:

 

 

USE EMan
GO
-- 附加数据库 
IF NOT EXISTS(select * From master.dbo.sysdatabases where name='T65') 
BEGIN
	EXEC sp_attach_db @dbname = 'T65',   
		@filename1 = 'c:\upem\T65.mdf',   
		@filename2 = 'c:\upem\T65_log.ldf'
END
GO


-- 删除旧数据库所有的存储过程,视图与触发器
DECLARE @col NVARCHAR(50);
DECLARE @sql NVARCHAR(256);
DECLARE datas CURSOR FOR SELECT name, CASE WHEN xtype ='P' THEN 'PROCEDURE' WHEN xtype ='V' THEN 'VIEW' ELSE 'TRIGGER' END col
							FROM sysobjects WHERE xtype IN ('TR','V') OR (category = 0 AND xtype ='P') ORDER BY xtype, name
OPEN datas;
FETCH next FROM datas INTO @sql, @col;
WHILE @@FETCH_STATUS=0
BEGIN
	EXEC('DROP ' + @col + ' ' + @sql)
	FETCH next FROM datas INTO @sql, @col;
END;
CLOSE datas;
DEALLOCATE datas;
GO

-- 根据临时数据库批量添加存储过程,视图与触发器
DECLARE @sql NVARCHAR(MAX);
DECLARE @col NVARCHAR(100);
DECLARE datas CURSOR FOR 
	SELECT com.text,obs.name
	FROM T65.dbo.sysobjects obs INNER JOIN T65.dbo.syscomments com ON obs.id = com.id
	WHERE obs.xtype IN ('TR', 'V') OR (obs.category = 0 AND obs.xtype = 'P')
	ORDER BY obs.xtype DESC, obs.name
OPEN datas;
FETCH next FROM datas INTO @sql, @col;
WHILE @@FETCH_STATUS=0
BEGIN
	if ( @sql is not null)
	BEGIN
		EXEC sp_executesql @sql;
		if @@error <>0
			print @sql;
	END;	
	FETCH next FROM datas INTO @sql, @col;
END;
CLOSE datas;
DEALLOCATE datas;
GO



-- 分离数据库
IF EXISTS(select * From master.dbo.sysdatabases where name='T65') 
	EXEC sp_detach_db @dbname = 'T65'

  说明:EMan 代表企业旧数据库;T65 代表新数据库;以上代码在sql server 2005上测试成功

分享到:
评论

相关推荐

    SQL脚本导出导入工具

    批量导出、导入SQL表、存储过程、触发器、视图,修正了特殊字符导出的错误。 导出数据表可只导出表结构或者连同数据一起导出。

    mysql中文手册+mysql命令大全+mysql存储过程

    CHM文件是一种Windows帮助文件,包含了大量的MySQL知识,如数据库概念、安装配置、SQL语法、索引、视图、触发器、存储过程和函数等。这个手册可以帮助用户快速查找并理解MySQL的各种功能和操作,尤其对于初学者来说...

    SQL Server数据导入SQLite工具

    例如,视图、存储过程、触发器的创建和使用可能需要调整。工具需要理解这些语法差异并进行适配。 5. **权限和安全**:SQL Server拥有复杂的权限管理和安全模型,而SQLite相对简单。在迁移过程中,需要考虑如何处理...

    商品批发设计

    在商品批发系统中,存储过程可以封装常用的操作,如批量导入新产品、计算批发折扣或生成销售报告。这提高了代码的复用性,减少了网络传输,同时也提供了更好的安全控制,因为可以限制对存储过程的访问而不是对单个表...

    SqlServer加密.txt

    `sp_EncryptObject` 是一个自定义存储过程,用于对SQL Server中的存储过程、视图、触发器、用户定义函数等进行加密处理。该过程可以根据输入参数决定加密的对象范围,支持对单个对象进行加密,也支持对所有符合条件...

    DB2 MTK2.0 数据库转换软件(可以将任何数据库转为DB2数据库)

    3. 扫描:工具会扫描源数据库中的所有对象,包括表、视图、存储过程和触发器。 4. 转换:用户可以选择要迁移的对象,MTK2.0将生成转换后的DB2兼容代码。 5. 测试:在迁移前,用户应先在测试环境中验证转换结果。 6. ...

    RUNScripts.exe

    批量导出、导入SQL表、存储过程、触发器、视图,修正了特殊字符导出的错误。 导出数据表可只导出表结构或者连同数据一起导出。

    清华IT SQLServer2005教程(6)

    SQL Server 2005中的触发器是数据库管理系统中的一个重要特性,它是一种特殊的存储过程,能够在特定的数据操作(如INSERT、UPDATE、DELETE)发生时自动执行。触发器的使用旨在确保数据的一致性和完整性,实现更复杂...

    数据库批量转换工具快速转换数据库

    快速转换工具需要能解析源数据库的结构,并将其适配到目标数据库的架构,包括表、视图、索引、触发器、存储过程等。 4. SQL脚本生成:在某些情况下,工具可能允许用户生成SQL脚本来手动执行转换,这为复杂或定制化...

    hrsystem

    在人事管理系统中,可能有用于批量导入新员工信息、计算员工工资、处理员工晋升或离职等的存储过程。 2. `hrsys.sql`:这个文件很可能是数据库的初始化脚本或者数据结构定义。它可能包含了创建数据库表、视图、索引...

    数据库课程设计教务管理样本.doc

    比如,创立存储过程用于自动化处理复杂的业务逻辑,如批量导入学生信息;创立触发器则用于在特定事件(如成绩录入)发生时自动执行某些操作,如检查成绩的有效性。 七·问题总结 在数据库设计完成后,需要对整个...

    MySQL必知必会笔记整理

    接着,`mysql crash course script (chapter18-29).sql`涵盖了更高级的主题,可能包括索引、视图、存储过程、触发器、事务处理、备份与恢复、性能优化等。索引能极大提升查询速度,视图可以简化复杂查询并提供安全...

    sql server 2008 基础教程

    学习如何创建、修改和删除数据库对象,如表格、视图、存储过程和触发器。此外,了解数据库备份与恢复策略,以确保数据安全。 三、Transact-SQL(T-SQL)语言 T-SQL是SQL Server的扩展,用于执行数据查询、更新、插入...

    oracle数据导入到Mysq库

    这可能包括表、视图、存储过程、触发器等对象。为了确保数据完整性,可能需要在迁移前对源数据库进行快照或锁定。 2. **数据转换**:由于Oracle和MySQL在数据类型、语法等方面存在差异,工具需要将Oracle的数据格式...

    Visual SQLTools 2012 Pro – 高效率SQL开发工具

    16、表、视图、存储过程、触发器等的创建、编译和执行。 17、DB设计书关联功能。(能将表字段逻辑名称关联到工具中) 18、代码及文档生成。 19、二次开发。(开放接口可使用C#或VB.NET语言进行二次开发) 了解更多...

    terdata sql

    这些权限包括SELECT、INSERT、UPDATE、DELETE等基本操作权限,以及更高级别的权限,如EXECUTE存储过程或触发器的权限。 2. **角色管理**:除了直接管理用户的权限外,Teradata还支持角色的概念。通过定义角色并将...

    SQL Server 2005编程入门经典(第2版)源码

    3. **Chapter10.sql**:这个文件可能对应于书中的第十章内容,可能涉及更复杂的SQL Server特性,如视图、触发器或者存储过程的高级用法。 4. **CreateNorthwindBulkCustomerOrdersView.sql**:这个脚本可能创建了一...

    oracle数据库对象备份与恢复脚本工具

    为了更好地管理和维护数据库中的各种对象(如存储过程、函数、包、触发器、视图等),本文提供了一系列实用的脚本工具。这些脚本可以在PL/SQL Developer环境下运行,帮助用户实现数据库对象的批量导出与恢复。 ####...

    数据库迁移工具(My SQL →SQL Server)

    1. **预迁移评估**:确定要迁移的数据库对象,了解源数据库和目标数据库之间的差异,如数据类型、存储过程、触发器等。 2. **数据备份**:在开始迁移之前,确保对源数据库进行完整备份,以防止意外数据丢失。 3. *...

Global site tag (gtag.js) - Google Analytics