巧用Linux 命令来拆分Windows下的大文件

背景:

  今天在处理SQL Server一个同步链的问题,源头目的端比较数据,最后产生了一个300MB的文件,在windows下根本没办法打开。而且就算可以打开,也需要在每1000条命令后,等待10秒钟,避免出现同步链的压力异常增大。

  那么当前最主要的两个问题是:

    1.将大的比对结果的文件拆成小的文件,这样才可以在windows下打开

    2.在每1000行命令后面添加waitfor delay '00:00:10'

解决过程:

  最开始尝试在windows环境下完成上面的工作,但是一直不得其领,最后只得在Linux下进行解决。

  1.将大的结果文件(q.sql)拆成小文件,比如将每10W行命令放入到一个新的命令:

    采用的命令为:split -l 100000 q.sql q_new

   这样就可以将大文件q.sql拆成多个小文件,类似的命令为q_newaa,q_newab,q_newac,在每个小文件(除最后一个外)中都包含10W行记录

  2.在每个小文件中,每1000行后面添加waitfor delay '00:00:10',可以采用下面的命令实现,以单个文件为例

    sed "0~1000 s/$/\nwaitfor delay '00:00:10'/g" q_newaa>q_newaa_new

   这样在小文件中的每1000行后面就会新加一行 waitfor delay '00:00:10'

 

  当然,我们在正式作业的时候,最好是先将上面的第二步应用到大文件,之后再进行拆分。之后再循环执行这些小文件,这样就可以实现最初的目的了

  

 

posted @ 2016-11-01 14:16  Wison-Ho  阅读(2362)  评论(0编辑  收藏  举报