2009-10-20 18 views
3

我有一个非常大的SQL脚本(大约700兆字节)。我想知道是否有减少脚本大小的好方法?是否有任何程序会缩小sql脚本文件的大小?

我知道有对JavaScript代码极小,并正在寻找一个与SQL脚本使用。

我不希望得到的SQL脚本性能。我正在尝试缩小文件大小。删除多余的空白。保持名称限制,以便脚本文件的大小可以更小。

如果我尝试加载在SQL Server Management Studio中的文件,我得到这个错误。

没有足够的存储空间可供 处理此命令。 (例外从 HRESULT:0x80070008)(mscorlib)

+0

是“代码最小化”意味着压缩? – pavium 2009-10-20 12:59:32

+2

据我所知,缩小SQL脚本不会提高性能,可能对部署影响可以忽略不计,如果自动生成则不会改进维护。只是想知道,通过缩小你的SQL脚本你会解决什么问题? – Juliet 2009-10-20 13:22:47

+0

为什么你想这样做? – van 2009-10-20 13:57:25

回答

3

700MB的脚本中有什么?我希望有一些相似性/重复性可以缩短文件。

只是一些猜测:

  • 除了插入一百万条记录使用INSERT语句,使用批量加载工具
  • ,而不是更新了许多的个人记录,尽量批量更新为相同的值成一个(例如更新选项卡设置col = 1其中id在(..)而不是单独更新)
  • 长操作可以定义为存储过程(在运行脚本之前),脚本只需调用存储过程

当然,将脚本分成更小的部分并从简单的批处理文件调用每个脚本也可以。但是我会对性能有点担心(执行需要多长时间?),并且会寻找一些更快的方法。

1

gzip应该做的。

+0

他希望它仍然是一个脚本(至少这是我如何解释这个问题) – 2009-10-20 12:56:29

+0

他为什么要这样做? – troelskn 2009-10-20 13:00:32

1

SQL更难收缩,领域,表名和命令必须是它们是什么。此外,您不会仅仅想将这些命令重写为更短的内容,因为这可能会影响性能。

根据您所使用的数据库管理系统,它可以允许短名字的命令,然后有可能是一个转换器。

3

怎么样从一个单一的主脚本破坏您的脚本分成若干小文件,并调用这些文件?

This link describes how to do it from a stored procedure.

或者你可以从一个批处理文件这样做:

REM =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 
REM Define widely-used variables up here so they can be changed in one place 
REM Search for "sqlcmd.exe" and make sure this path is valid for you 
REM =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 
set sqlcmd="C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe" 
set uname="your_uname_here" 
set pwd="your_pwd_here" 
set database="your_db_name_here" 
set server="your_server_name_here" 

%sqlcmd% -S %server% -d %database% -U %uname% -P %pwd% -i "c:\script1.sql" 
%sqlcmd% -S %server% -d %database% -U %uname% -P %pwd% -i "c:\script2.sql" 
%sqlcmd% -S %server% -d %database% -U %uname% -P %pwd% -i "c:\script3.sql" 

pause 

我喜欢的批处理文件接近自己,因为它更容易鼓捣出来的,你可以安排它作为一个窗口工作。

确保.BAT文件与适当的安全限制的文件夹中,因为它在一个纯文本.bat文件的凭据。

+1

打破文件听起来像从结构角度来看是正确的;除非脚本充满INSERT语句来加载表格,否则700MB似乎对于一个有凝聚力的文件来说非常大。 – grantwparks 2009-10-20 15:56:53

0

压缩的sql文件将拥有最多的压缩比。

最小化TXT SQL文件会降低每兆字节的一些/千..不值得...

更好的方法是创建一个“功能”来解压和读取文件。我想最好的好处。

今天,文件大小不应该是一个问题。拨号连接?软盘?

1

试图加载大型脚本到Management Studio中时,我得到了同样的错误(回答这个,因为它是最上面的项目,当我搜索“SQL脚本大小”返回)。在我的情况下,我试图通过使用SQL Server脚本生成器将数据库从SQL2008 R2降级到SQL 2008,SQL Server脚本生成器创建了700mb结构和数据.sql文件。

为了解决它,我使用的命令行来运行,而不是该脚本:

C:> SQLCMD -S [SQLSERVER \ INSTANCE] -i [FILELOCATION \ FILENAME] .SQL

希望这可以帮助别人。

0

pg-minify可以做到这一点,而不是仅仅为PostgreSQL的,但对于大多数的符号,包括MS,MYSQL等