我有一个非常大的SQL脚本(大约700兆字节)。我想知道是否有一种减少脚本大小的好方法?
我知道JavaScript有代码最小化,我正在寻找一个用于SQL脚本的代码。
我不希望获得SQL脚本的性能。我试图让文件更小。删除多余的空格。保持名称限定,以便脚本文件大小可以更小。
如果我尝试在SQL Server Management Studio中加载该文件,则会收到此错误。
没有足够的存储空间可供使用 处理此命令。 (例外 HRESULT:0x80070008)(mscorlib)
答案 0 :(得分: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
我自己喜欢批处理文件方法,因为它更容易修改它,您可以将它安排为Windows作业。
确保.BAT文件位于具有相应安全限制的文件夹中,因为它具有纯文本.BAT文件中的凭据。
答案 1 :(得分:3)
700MB的脚本中有什么?!我希望有一些相似之处/重复可以缩短文件。
只是一些猜测:
当然,将脚本分成更小的部分并从一个简单的批处理文件中调用每个部分也可以。但是我会对性能有点担心(执行需要多长时间?!)并且会寻找更快的方法。
答案 2 :(得分:1)
gzip应该这样做。
答案 3 :(得分:1)
SQL更难缩小,字段,表名和命令必须是它们的本质。另外,您不仅希望将命令重写为更短的命令,因为它可能会影响性能。
根据您使用的DBMS,它可能允许命令的短名称,然后可能有转换器。
答案 4 :(得分:1)
(回答这个问题,因为它是我搜索“SQL脚本大小”时返回的顶级项目)
尝试将大型脚本加载到Management Studio时出现了同样的错误。在我的情况下,我试图通过使用SQL Server脚本生成器将数据库从SQL2008 R2降级到SQL 2008,该生成器创建了700mb结构和数据.sql文件。
为了解决这个问题,我使用命令行代替运行脚本:
C:> sqlcmd -S [SQLSERVER \ INSTANCE] -i [FILELOCATION \ FILENAME] .sql
希望这有助于其他人。
答案 5 :(得分:0)
压缩sql文件将具有最大的压缩比。
最小化txt sql文件将减少每兆的一些字节/千字节..不值得......
更好的方法是创建一个“函数”来解压缩并读取文件。我猜的最好的好处。
今天,文件大小应该不是问题。拨号连接?软盘?
答案 6 :(得分:0)
pg-minify可以做到这一点,不仅适用于PostgreSQL,而且适用于大多数符号,包括MS,MySql等。