背景:
今天在處理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'
當然,我們在正式作業的時候,最好是先將上面的第二步應用到大文件,之后再進行拆分。之后再循環執行這些小文件,這樣就可以實現最初的目的了