`
foible
  • 浏览: 43941 次
  • 性别: 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表、存储过程、触发器、视图,修正了特殊字符导出的错误。 导出数据表可只导出表结构或者连同数据一起导出。

    全部源代码与脚本1

    数据库课程设计源代码与脚本目录(一)(二)MYSQL(建库脚本,触发器,存储过程,数据导入等) 28建库脚本 28视图与索引 29触发器 30存储过程 31批量

    RUNScripts.exe

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

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

    1、实现存储过程、函数、包、触发器、视图、同义词的批量导出与恢复脚本 2、以下脚本均在PL/SQL的COMMAND WINDOWS窗口执行,执行脚本与脚本输出的文件默认存放路径为“C:\Program Files\PLSQL Developer”,可以通过...

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

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

    DBAnywhere发布4.79版本了

    主键,索引,视图,触发器,存储过程等,可以生成对表增,删,改,查的sql语句,还可以生成对表操作的代码,支持批量表的数据导入和导出(支持blob/clob),支持excel,txt文件导入导出数据库,不同数据库的表之间进行数据交换...

    swing开发的数据库工具(DBAnywhere4.77),是开发mis系统的好帮手

    swing开发的数据库管理工具,支持常用的几大主流数据库,其他数据库可以自己扩展添加(只要有此数据库jdbc驱动的jar包就行),可以查看用户表(数据可导出成Excel),主键,索引,视图,触发器,存储过程等,可以生成对表增,删...

    swing开发的数据库工具(DBAnywhere4.76),是开发mis系统的好帮手

    swing开发的数据库管理工具,支持常用的几大主流数据库,其他数据库可以自己扩展添加(只要有此数据库jdbc驱动的jar包就行),可以查看用户表(数据可导出成Excel),主键,索引,视图,触发器,存储过程等,可以生成对表增,删...

    一款简洁高效、功能强大的图形化 MySQL 数据库管理工具

    可以连接到指定的MYSQL主机,支持使用HTTP管道以及/SSH/SSL,可创建新的表、视图、存储过程、函数、触发器及事件,支持删除及截位数据库。支持转储数据库,将数据库保存到 SQL,编辑功能可以查找/替换指定内容,可列...

    MySQL5 权威指南第3版中文版_part1

     22.11 mysqlimport程序(文本导入、批量导入)  22.12 mysqlshow程序(查看信息)  22.13 myisamchk程序(修复MyISAM文件)  22.14 myisampack程序(压缩MyISAM文件)  第23章 MySQL API应用指南  23.1 ...

    C#开发经验技巧宝典

    19.11 视图、存储过程和触发器的使用 538 0921 如何正确认识视图 538 0922 如何获取数据库中的全部用户视图 539 0923 如何通过视图修改数据 539 0924 如何正确理解存储过程 540 0925 如何获取数据库中的...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例076 批量替换某一类字符串 95 实例077 把异常与错误信息显示到窗体中 97 实例078 从字符串中分离文件路径、 文件名及扩展名 98 实例079 判断手机号的合法性 99 实例080 用字符串构建器追加字符 100 实例081 去掉...

    Toad 使用快速入门

     把鼠标定位到表/视图/存储过程名称之上,按F4,可以打开对象描述窗口,方便的查看表和视图的定义,存储过程的源代码,  非常容易对SQL语句的分析其执行计划:单击工具栏上的 按钮就可以看到Explain Plan的...

    C#.net_经典编程例子400个

    第1章 窗体与界面设计 1 1.1 菜单应用实例 2 实例001 带历史信息的菜单 2 实例002 菜单动态合并 3 实例003 像开始菜单一样漂亮的菜单 4 实例004 任务栏托盘菜单 5 实例005 可以拉伸...

    MySQL 5权威指南(第3版) 中文版 下载地址

     22.11 mysqlimport程序(文本导入、批量导入)  22.12 mysqlshow程序(查看信息)  22.13 myisamchk程序(修复MyISAM文件)  22.14 myisampack程序(压缩MyISAM文件)  第23章 MySQL API应用指南  23.1 ...

    DM6在线读报系统 2.0.rar

    数据库仅包含了4个数据表,不含视图、触发器、存储过程等数据形式。4个主表是不可以改名、删除的。阅读及管理权限均通过同一数据库连接帐号(安装时预设定)访问数据库。您可以通过修改web.config页中的对应字符串变更...

Global site tag (gtag.js) - Google Analytics