巧用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'

 

  當然,我們在正式作業的時候,最好是先將上面的第二步應用到大文件,之后再進行拆分。之后再循環執行這些小文件,這樣就可以實現最初的目的了

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM