您的位置:首页 > 数据库

简便的MS SQL 数据库 表内容 脚本 生成器,支持多级关联(含源代码)(更新:添加对NVARCHAR的特别支持、结果保存)

2005-07-19 10:55 459 查看
最近在写的一个系统,后台数据库是MS SQL Server。

在发布的时候,由于需要生成初始化数据,因为MS SQL Server的企业管理器生成的SQL脚本不包含表数据,因此需要一个工具,可以实现根据表而生成表数据SQL脚本,找了一下,发现CodeSmith包含该功能,但用起来有点麻烦,所以干脆自己写了一共比较简便的,不能自定义表,只能在选择数据库后把全部表都生成SQL脚本,呵呵,写了2个小时,俺忙得很,有兴趣的朋友请自行下载并修改,没有版权,请随意复制、修改和传播;)

当然,如果你改进了,乐意与大家分享的话,可以上传或者发送给我,我帮你上传。

我给它起了个名字:MS SQL Server表数据脚本生成器(SmartDBScripts)。

关键思路(没有特别技术可言)是:

1、利用SqlClient访问master数据库的sysdatabases表,列举所有数据库。

2、访问目标数据库的sysobjects表(type为u,即用户表),列举所有用户表。

3、循环所有表,循环每个表的所有记录,套用自定义模板,StringBuilder累加结果。

4、利用exec sp_MSforeachtable禁止了约束,利用DBCC CHECKIDENT实现了主键列重新计算自增值,利用TRUNCATE TABLE实现了数据的完全清除等;

其中,模板的设计比较简单,共三个:

1、MSSQLTable.tpl,主模板,包括禁止/恢复约束;

2、MSSQLTable.Data.tpl,表模板,每个表的操作;

3、MSSQLTable.Data.Item.tpl,表记录模板,每条记录的操作;

其结构关系如下:

MSSQLTable--|
                        |-->MSSQLTable.Data
                        |    |-->MSSQLTable.Data.Item
                        |    |-->MSSQLTable.Data.Item
                        |    |-->MSSQLTable.Data.Item
                        |    |-->...
                        |
                        |-->MSSQLTable.Data
                        |-->MSSQLTable.Data
                        |-->MSSQLTable.Data
                        |-->...

模板是用以格式化SQL输出的,这些模板到底是怎样的,请看bin/Debug/Templates下面的几个文件。

总的来说,这个工具是quick & dirty的典型代表,能用,但不好用,原因很明确:仅仅满足我的基本需要,说得不好听,这东西有点鸡肋,哈哈,请各位天马行空,自由发挥吧。

点击下载:SmartDBScripts.zip

密码为:“unruledboy”。为什么要加密码呢?我发现文件下载似乎能给别人查找到,意思是:我只上传了某文件,但还没有对外发布连接,发现已经有好几个下载计数了,因此为了保证下载是经过正常途径的(阅读此随笔的网友),所以加了密码,给你们带来麻烦,非常抱歉。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐