[原]Sql脚本压缩类。

精简的美丽

/*
 * Sql脚本压缩类。
 * 去掉sql语句中多余的空格,以减少sql脚本的文本长度
 *
 * Author   : [email protected]
 * DateTime : 2015/07/03
 */

using System.Text.RegularExpressions;

namespace Sp.Net.Tools
{
    internal class SqlCompressor
    {
        public static string Compress(string source)
        {
            if (string.IsNullOrEmpty(source)) return "无数据";
            //1.去掉所有注释; 行注释 与 块注释
            source = LineComment(source);
            source = BlockComment(source);
            //2.压缩空格
            source = MultipleSpace(source);
            //3.压缩标点符号
            source = Punctuates(source);
            return source;
        }

        /// <summary>
        /// 去掉行注释
        /// </summary>
        /// <param name="source"></param>
        /// <returns></returns>
        private static string LineComment(string source)
        {
            //去掉 "--" 开头的行
            var x = Regex.Replace(source, "--.*", "", RegexOptions.IgnoreCase | RegexOptions.Multiline);

            return x;
        }

        private static string BlockComment(string source)
        {
            //去掉 "/* */" 的行
            var x = Regex.Replace(source,@"\/\*.*\*\/","",RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline);

            return x;
        }

        private static string MultipleSpace(string source)
        {
            var x = Regex.Replace(source,@"\s{2,}"," ",RegexOptions.IgnoreCase | RegexOptions.Multiline);

            return x;
        }

        /// <summary>
        /// 空格在标点符号的两侧
        /// </summary>
        /// <param name="source"></param>
        /// <returns></returns>
        private static string Punctuates(string source)
        {
            var x = Regex.Replace(source,@"\s*([\)\(\,\;\.\:\‘\""\=\+\-\*\/\>\<\!\|\~\^])\s*","$1",RegexOptions.IgnoreCase | RegexOptions.Multiline);

            return x;
        }
    }
}
时间: 2024-11-10 13:46:11

[原]Sql脚本压缩类。的相关文章

基于SQL脚本将数据库表及字段提取为C#中的类

开发时,勉不了需要使用SQL直接与数据库交互,这时对于数据库中的表名及字段名会使用的比较多.如果每使用一次都复制一个,实在蛋疼. 所以就考虑将其做成const常量.但是数据库中的表和字段相当多,一个一个敲,不但累,还有可能敲错.要保证正确,最好的办法当然是使用工具或者脚本. 这里提供一个SQL脚本的实现. 原理:获取数据库的表--->遍历每个表中的字段--->生成数据 SQL代码 DECLARE @tableName VARCHAR(MAX) DECLARE @tableCount int D

[转]基于SQL脚本将数据库表及字段提取为C#中的类

开发时,勉不了需要使用SQL直接与数据库交互,这时对于数据库中的表名及字段名会使用的比较多.如果每使用一次都复制一个,实在蛋疼.所以就考虑将其做成const常量.但是数据库中的表和字段相当多,一个一个敲,不但累,还有可能敲错.要保证正确,最好的办法当然是使用工具或者脚本. 这里提供一个SQL脚本的实现. 原理:获取数据库的表--->遍历每个表中的字段--->生成数据 SQL代码 DECLARE @tableName VARCHAR(MAX)DECLARE @tableCount intDECL

.net(C#)在Access数据库中执行sql脚本

自己写的一个工具类,主要是业务场景的需要. 主要有两个功能: ①执行包含sql语句的字符串 ②执行包含sql语句的文件 调用方式 1 /// <summary> 2 /// 执行sql语句 3 /// </summary> 4 /// <param name="sql">需要执行的sql语句</param> 5 public bool ExecuteSql(string sql, ref string errorMsg) 6 { 7 Se

java程序执行SQL脚本文件

首先引入ibatis-common-2.jar包 import com.ibatis.common.jdbc.ScriptRunner; import com.ibatis.common.resources.Resources; jpetstore测试代码如下: package com.ibatis.jpetstore.test; import java.sql.DriverManager; import java.util.Properties; import com.ibatis.commo

让你提前认识软件开发(35):如何修改SQL脚本以完成需求?

第2部分 数据库SQL语言 如何修改SQL脚本以完成需求? SQL脚本的修改和C语言代码的修改流程是一样的,都要遵循以下步骤:         第一步,阅读需求,弄清楚自己要完成什么功能.         第二步,对照需求阅读原代码,找到本次要修改的内容的大致位置.         第三步,对代码进行修改(包括:添加.删除和修改等),将本次的功能添加上去.         第四步,对修改后的代码进行测试,验证新增功能是否满足需求. 本文以一个实际的需求完成过程为例,详细说明如何对SQL脚本进行修

Java执行SQL脚本文件到数据库

方式一:直接读取SQL脚本文件的内容,然后传递到SQL中. 代码:RunSqlService: @Autowired private RunSqlDao runSqlDao; /** * 读取文件内容到SQL中执行 * @param sqlPath SQL文件的路径:如:D:/TestProject/web/sql/脚本.Sql */ public void runSqlByReadFileContent(String sqlPath) throws Exception { try { Stri

转载 - PowerDesigner(CDM—PDM—SQL脚本的转换流程)

出处: http://jbeduhai.iteye.com/blog/338579 由于图片复制上去不显示,如想看内容及图片详情,请下载附件 PowerDesigner数据模型(CDM—PDM—SQL脚本的转换流程) 在开发的过程中会经常遇到 做一个模块功能,首先让你根据需要先画一个E-R图出来, 很多的朋友对 E-R图 都不是很熟悉,或者说有的朋友在开发的项目过程中,根本就没有用到E-R图,因为对于有些对E-R图不是很熟悉的朋友感觉画E-R图无从下手: 我个人根据一些资料整理了一下关于E-R图

MySQL命令行下执行.sql脚本详解

本文主要介绍一个在MySQL命令行下执行脚本文件的例子,通过这个例子让我们来了解一下在命令行下MySQL是怎样执行脚本的吧.现在我们开始介绍这一过程. 1.首先编写sql脚本,保存为的:book.sql,内容如下: 1 use test; 2 3 create table book 4 5 ( 6 7 tisbn varchar(20) primary key, 8 9 tbname varchar(100), 10 11 tauthor varchar(30), 12 13 chubanshe

Java执行上传的sql脚本文件

开始通过java执行cmd的方式调用sqlplus执行sql文件,但是后来发现一旦进入sqlplus,脚本执行完后就会一直等待而不关闭.后为了方便改成调用ant的SQLExec类提供的实现进行sql脚本的执行.原始代码如下,我是通过前端上传sql脚本文件后台服务端进行执行:     SQLExec sqlExec = new SQLExec();     //设置数据库参数     sqlExec.setDriver("oracle.jdbc.driver.OracleDriver")