作者:iamlaosong
最近一次導入結算數據後,查詢結算數據時發現有些數據居然沒有,非常奇怪。這個數據導入是先解壓壓縮包,再用sqlldr導入,查看解壓後的數據文件,發現沒有轉運數據文件,而壓縮包中是有的。手工解壓壓縮包,發現解壓到陸運數據文件時報出寫入錯誤,然後解壓操作就停止了,所以不僅陸運數據文件數據不全,後面的轉運數據文件也沒有解壓出來。
發生寫入錯誤,而且不是磁盤滿了,什麼原因呢?壓縮包本身並不大,也就200多兆,在Windows下解壓這個壓縮包,發現陸運數據文件很大,超過2G(2.8G),隱約覺得這是個問題,上網查詢果然unzip是不能解壓超過2G文件的,現在看來,不僅是壓縮包超過2G不行,壓縮包內文件超過2G也是不行的。要解壓,需要其它工具。據說這是由於C庫中long類型數據所能表示的文件偏移在32位機子上只能有2G,可我的機子是64位的。這個理由是不是在描述有什麼問題或者我理解的有偏差,這個並不重要,重要的是怎麼解壓大文件,方法之一是使用軟件7zip。
下載7zip軟件,下載地址是:http://sourceforge.net/projects/p7zip/files/
把這個文件直接下載到服務器上,或者先下載到本地電腦,再上傳到Linux服務器上。
點擊上面網址,登錄網站,點擊p7zip,選擇版本點擊下載(我選擇最新版本16.02),注意不要下載源程序:
點擊下載,下載後的文件是:p7zip_16.02_x86_linux_bin.tar.bz2
將這個文件夾上傳到Linux服務器上。用bzip2解壓該文件,再用tar解包:
bzip2 -d p7zip_16.02_x86_linux_bin.tar.bz2
tar -xvf p7zip_16.02_x86_linux_bin.tar
進入文件夾p7zip_16.02,安裝腳本加執行權限,執行 ./install.sh
執行7za可以看到幫助提示,安裝成功。
接着就可以使用 7za命令解壓.zip文件了。
如: 7za x 20190930*.zip
最後,修改腳本,將unzip換成7za x就可以了,如下圖: