简便的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”。为什么要加密码呢?我发现文件下载似乎能给别人查找到,意思是:我只上传了某文件,但还没有对外发布连接,发现已经有好几个下载计数了,因此为了保证下载是经过正常途径的(阅读此随笔的网友),所以加了密码,给你们带来麻烦,非常抱歉。
在发布的时候,由于需要生成初始化数据,因为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”。为什么要加密码呢?我发现文件下载似乎能给别人查找到,意思是:我只上传了某文件,但还没有对外发布连接,发现已经有好几个下载计数了,因此为了保证下载是经过正常途径的(阅读此随笔的网友),所以加了密码,给你们带来麻烦,非常抱歉。
相关文章推荐
- MySQL Cluster怎样实现向正在运行的数据库中联机添加节点和更新内容
- 向ACESS数据库中添加商品信息和更新数据库(源代码在百度盘)
- js实现web套打功能,支持拖动布局,支持按键移动支持打印预览,结果可保存至数据库中
- BindingSource 更改在保存时自动添加特别内容 比如更改人
- thinkcmf5更新模板代码分析,解决模板配置json出错导致数据库保存的配置项内容丢失问题
- 将dataGridView中的添加/删除等修改保存至数据库 ,支持多条操作,最后一次性保存
- MS SQL入门基础:数据库更新--添加数据
- [Java] JDBC 08 处理可更新的结果集 (sun提供了这样的接口,但是不见得所有的数据库厂商都支持)
- 优雅设计封装基于Okhttp3的网络框架(四):多线程下载添加数据库支持(greenDao)及 进度更新
- [Java] JDBC 08 处理可更新的结果集 (sun提供了这样的接口,但是不见得所有的数据库厂商都支持)
- 在freeTextbox中显示Script脚本内容以及freeTextbox中单引号如何保存至数据库
- 《JavaFX应用程序添加HTML内容》-更新内容
- 百翼短信炸弹 - SmsBomb (支持数据库更新)
- 数据库更新Sqlserver脚本总结
- thinkPHP5实现数据库添加内容的方法
- 由于取消了脚本支持,无法查看访问统计,也办法放gg广告了,本站更新速度降低.
- 巧妙使用JQuery Clone 添加多行数据,并更新到数据库
- 为ContentProvider添加数据库事务支持
- dotConnect for Oracle 更新至v9.2,新增程序集添加复选框,EF支持升级|附下载
- Android_Note(三)——添加、更新、保存记事本功能