tnblog
首页
视频
资源
登录

导出SQL脚本小程序

3408人阅读 2019/9/27 11:18 总访问:15723 评论:4 收藏:0 手机
分类: 其他
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Data.SqlClient;
  7. using System.IO;
  8.  
  9. namespace ExportSQL
  10. {
  11.     class Tsest
  12.     {
  13.         static void Main(string[] args)
  14.         {
  15.             string connstr = @"Data Source = .; User ID = sa; Password = 123456; Initial Catalog = Test; Connection Reset = FALSE; Pooling = true; Max Pool Size = 500";
  16.             ExportSQL(connstr, "v""v_StoreWithArea, uspGetCustRenewHist");
  17.         }
  18.  
  19.         /// <summary>
  20.         /// 导出sql脚本
  21.         /// </summary>
  22.         /// <param name="connStr">数据库连接字符串</param>
  23.         /// <param name="sqlType">需要导出的脚本的类型,可以为null或""</param>
  24.         /// <param name="nameStr">脚本的名称(列入存储过程的名称、视图的名称等)可以为null或""param>
  25.         static void ExportSQL(string connStr, string sqlType, string nameStr)
  26.         {
  27.             List<SqlParameter> sqlParameters = new List<SqlParameter>();
  28.             StringBuilder str = new StringBuilder("SELECT o.name,s.text FROM sysobjects o inner join   syscomments s on o.id = s.id ");
  29.             if (!string.IsNullOrEmpty(sqlType))
  30.             {
  31.                 sqlParameters.Add(new SqlParameter("@sqlType", sqlType));
  32.                 str.Append(" AND o.xtype =@sqlType ");
  33.             }
  34.             if (!string.IsNullOrEmpty(nameStr))
  35.             {
  36.                 var whereArray = nameStr.Split(',');
  37.                 str.Append(" and o.name  in ( ");
  38.                 for (int i = 0; i < whereArray.Length; i++)
  39.                 {
  40.                     sqlParameters.Add(new SqlParameter("@name" + i, whereArray[i].Trim()));
  41.                     str.Append("@name" + i);
  42.                     if (i < whereArray.Length - 1)
  43.                     {
  44.                         str.Append(",");
  45.                     }
  46.                 }
  47.                 str.Append(" )");
  48.             }
  49.  
  50.             string _sqltype = "";
  51.             switch (sqlType.Trim().ToUpper())
  52.             {
  53.                 case "P":
  54.                     _sqltype = "proc";
  55.                     break;
  56.                 case "V":
  57.                     _sqltype = "view";
  58.                     break;
  59.                 case "TF":
  60.                     _sqltype = "funtion";
  61.                     break;
  62.                 case "TR":
  63.                     _sqltype = "trigger";
  64.                     break;
  65.                 case "U":
  66.                     _sqltype = "table";
  67.                     break;
  68.                 default:
  69.                     _sqltype = "proc";
  70.                     break;
  71.             }
  72.             using (SqlConnection conn = new SqlConnection(connStr))
  73.             {
  74.                 conn.Open();
  75.                 using (SqlCommand sqlCommand = new SqlCommand(str.ToString(), conn))
  76.                 {
  77.                     if (sqlParameters != null && sqlParameters.Count != 0)
  78.                     {
  79.                         sqlCommand.Parameters.AddRange(sqlParameters.ToArray());
  80.                     }
  81.                     SqlDataReader reader = sqlCommand.ExecuteReader();
  82.                     string fileName = "sql脚本" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
  83.                     string filePath = "C:\\项目\\" + fileName;     //文件路径
  84.                     //创建文件流   FileMode.OpenOrCreate  有就打开,没有就创建
  85.                     FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate);
  86.                     fs.Close();
  87.                     StreamWriter write = new StreamWriter(filePath,false);//覆盖现有内容
  88.                     while (reader.Read())
  89.                     {
  90.                         string name = reader["name"].ToString();
  91.  
  92.                         write.WriteLine("--------------------" + name + "开始---------------");
  93.                         write.WriteLine("");
  94.                         write.WriteLine(@"if exists(select * from sys.objects  where name='{0}'  and type='{1}')", name, sqlType);
  95.                         write.WriteLine("begin");
  96.                         write.WriteLine(@"  drop {0} {1}", _sqltype, name);
  97.                         write.WriteLine("end");
  98.                         write.WriteLine("go");
  99.                         write.WriteLine("");
  100.                         write.WriteLine(reader["text"]);
  101.                         write.WriteLine("--------------------" + name + "结束---------------");
  102.                         write.WriteLine("");
  103.                     }
  104.                     Console.WriteLine("导出sql成功");
  105.                     write.Close();
  106.                     reader.Close();
  107.                     Console.ReadLine();
  108.                 }
  109.             }
  110.         }
  111.     }
  112. }


评价

剑轩

2019/9/27 12:18:42

厉害了![嘻嘻][嘻嘻]

:@剑轩本来想用其他表情回复,奈何没有找到,这个将就用![嘻嘻][嘻嘻]

2019/9/27 17:23:48 回复

剑轩:@。哈哈,二级回复那个表情我暂时弄掉了

2019/9/28 14:48:47 回复

剑轩

2019/9/27 12:18:42

厉害了![嘻嘻][嘻嘻]

NPOI导出excel。根据模板导出Excel

使用NPOI导出excel///&lt;summary&gt; ///导出excel(下载excel) ///&lt;/summary&gt; publicvoidToExcel() { HSSFWo...

使用NPOI导出excel(包括图片)

Excl模板导出相信我们都会,那么模板上要导出图片呢?嗯~还是来个例子:准备工作:首先要引用NPOI包:然后获取数据集(我这...

根据客户端勾选信息,根据模板批量导出word

///&lt;summary&gt; ///导出 ///&lt;paramname=&quot;param&quot;&gt;前端值数组&lt;/param&gt; ///&lt;returns&gt;&lt;...

.NET mvc Excel的导入导出解析

“为什么越靠北方地区的人性格越直接?”“天寒地冻的,谁有时间跟你磨叽?”今天我们讲解的内容是关于在mvc框架里对Excel...

C使用NPOI导出 (Execl.xls)类型文件(一)

公司业务一直处于表格居多的情况于是,导出成了常态,今天记录一下导出方法(前几天还说要合并行什么的太难了)1,需自行到...

C导出 Execl 类型文件(二)动态合并表格(更新了)

希望我的一些想法能让你们碰撞出属于你的火花看这篇之前可以看看上一篇http://www.tnblog.net/15736469932/article/details...

Camtasia 9如何导出MP4格式视频

要先把视频拖到下面去,导出的是右边那个框框播放的视频。要先把视频拖到下面去右边的框框才会播放你想要的视频,而不是双...

前端好用的导出excel插件,可自定义写导出样式等等

前端好用的导出excel插件,可自定义写导出样式等等github:https://github.com/exceljs/exceljs/blob/HEAD/README_zh.md

使用Aspose.Excel导出excel

代码:publicActionResultAbout() { Excelexcel=newExcel(); stringtemplate=Server.MapPath(&quot;~/Excel/Template.xl...

npoi导出excel

show your code:publicActionResultOutPutExcel() { //在内存中构建一个excel HSSFWorkbookworkbook=newHSSFWorkbook();...

MVC Exel导出

前言命名空间:using NPOI.HSSF.UserModel;using System.IO;创建空的Exel//内存中构建一个Exel HSSFWorkbookworkbook=newH...

abp中文件下载,将内存数据导出到Excel并下载

1.数据导出为Excel的StreamusingSystem; usingSystem.Collections.Generic; usingSystem.IO; usingAbp.Collections.Exte...

DevExpress PivotGrid导出

控件原始导出代码+效果:this.pivotGridControl1.ExportToXlsx(s.FileName)由于导出数据有折叠,不方便筛选,也不够直观,...

docker容器导出镜像。docker 镜像导入。docker exportimport。docker镜像的定制

docker镜像的定制有时候我们需要根据需求自定义镜像,自定义镜像的方式也有很多种,比如基于已有镜像创建、基于本地模板导...

docker 镜像导入导出,docker容器导出成镜像。docker load与docker export区别。docker save,docker export

docker save,docker loaddocker save images_name:将一个镜像导出为文件,再使用例如:docker save -o mynginx1.22.tar ng...
没有个性,不需要签名
排名
72
文章
8
粉丝
3
评论
3
导出SQL脚本小程序
剑轩 : 厉害了!
导出SQL脚本小程序
剑轩 : 厉害了!
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
即使窗外天寒地冻,吃一口肉,一切自有力量。