sql大檔案拆分匯入

來源:互聯網
上載者:User

標籤:記憶體   port   write   .com   .sql   預設   完美   指定   一個   

一、檔案壓縮與解壓
sql檔案比較大,通常會壓縮至大概十分之一大小。1、壓縮檔 非打包tar -czvf  test.tar.gz  test.sql   //壓縮 test.sql檔案為test.tar.gz(會保留原檔案)tar -czvf  test.tar.gz  test/      //壓縮目錄下的檔案 (不過目錄的壓縮效果就一般了)2、列出壓縮檔內容tar -tzvf test.tar.gz rw-r--r-- root/root     0 2010-05-24 16:51:59 test.sql3、解壓檔案tar -xzvf test.tar.gz (會保留原檔案)
二、大檔案拆分

今天遇到一個問題,要將一個很大的sql指令碼匯入資料庫,誰可想這個檔案已經40G多。剛開始直接匯入,結果匯入了幾個G之後就卡死不再執行了,在網上查了一下,感覺是檔案太大了,記憶體不夠無法一次性緩衝這麼多內容。於是我就想到了拆分檔案的方式,被我拆成了100多個檔案,之後找到上一次執行的位置,一個個小檔案執行,最終完美解決了問題。
只不過有一個注意事項,由於檔案是按行拆分的,所以可能會將建立表的create語句截斷了,所以執行這個檔案之前要先檢查一下,如有問題就編輯一下檔案再執行。

1.功能:
將檔案分割成多個

2.文法:
split [OPTION]... [INPUT [PREFIX]]

3.描述:
將輸入檔案‘INPUT‘分割,輸出固定大小的檔案片段"PREFIXaa,PREFIXab,...",預設大小為1000行,並且PREFIX的預設值為‘x‘,如果沒有指定輸入檔案(INPUT檔案),或者輸入為-,那麼會從標準輸入讀取。

4.常用參數
-a, --suffix-length=N
使用的尾碼的長度,預設長度為2,例如‘aa‘,‘ab‘等尾碼,其長度就是2。
-b, --bytes=SIZE
指定每個輸出檔案片段的大小。
-C, --line-bytes=SIZE
指定每個輸出檔案片段的最大行位元組(???)。
-d, --numeric-suffixes
指定輸出檔案片段尾碼為數字而不是預設的字母形式。
-l, --lines=NUMBER
指定每個輸出檔案片段的行數。

以上,指定的大小"SIZE"可以用如下的方式指定單位:尾碼為b表示512位元組,尾碼為k表示1K,尾碼為m表示1M。

5.本次使用
每300行拆分成一個檔案,拆分後的檔案名稱以name開頭,以數字作為尾碼尾碼長度為3
split -l 300 test.sql -d -a 3 name

三、資料庫匯入

1、mysql -uxxxx -pxxxx -h119.xxx.xxx.xxx --port=36991 -A;(這我們串連資料庫的命令,需要帶ip和連接埠。帶上-A 在切換資料庫時就不用預讀表資料,要不然會很卡)

2.show databases ; 查詢資料庫。

  1. use xxxx; 使用某個資料庫

  2. 一個個檔案接著匯入:
    每個檔案使用前,檢查一下檔案首末端,有沒有create 建表語句被截斷,如果有就手動處理下。
    mysql>source /web/name001;(在mysql命令列執行,先建立並進入資料庫,/web/name001 是你拆分的子檔案地址)

5.一個報錯處理

匯入完成之後,在開啟資料表示,mysql報錯! Can‘t create/write to file ‘/tmp/#sql_c62_0.MYI‘ ......

重啟資料庫也報錯了,於是查看日誌:
cd /var/log/
tail -50 mysqld.log
日誌中也是這樣的錯誤
/usr/libexec/mysqld: Can‘t create/write to file ‘/tmp/ibyPwDHe‘ (Errcode: 13)

解決:
看了下系統目錄/tmp的許可權不夠,之前設定的是1666 改成 1777就可以了。
這方面的說明,可查看我的另一篇文章:http://blog.51cto.com/ycgit/1406909

sql大檔案拆分匯入

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.