小生博客:http://xsboke.blog.51cto.com
-------謝謝您的參考,如有疑問,歡迎交流
SQL備份需要導入到Mysql,但是SQL文件太大怎么辦?
推薦一個shell腳本:mysqldumpsplitter
--source: mysqldump filename to process. It could be a compressed or regular file.
--desc: This option will list out all databases and tables.
--extract: Specify what to extract. Possible values DB, TABLE, ALLDBS, ALLTABLES, REGEXP
--match_str: Specify match string for extract command option.
--compression: gzip/pigz/bzip2/none (default: gzip). Extracted file will be of this compression.
--decompression: gzip/pigz/bzip2/none (default: gzip). This will be used against input file.
--output_dir: path to output dir. (default: ./out/)
--config: path to config file. You may use --config option to specify the config file that includes following variables.
SOURCE=
EXTRACT=
COMPRESSION=
DECOMPRESSION=
OUTPUT_DIR=
MATCH_STR=
從mysqldump中提取單個數據庫:
sh mysqldumpsplitter.sh --source filename --extract DB --match_str database-name
上面的命令將從指定的“filename”sql文件為指定的數據庫創建sql,并將其以壓縮格式存儲到database-name.sql.gz。
從mysqldump中提取單個表:
sh mysqldumpsplitter.sh --source filename --extract TABLE --match_str table-name
上面的命令將從指定的“filename”mysqldump文件為指定的表創建sql,并將其以壓縮格式存儲到database-name.sql.gz。
從mysqldump中提取與正則表達式匹配的表:
sh mysqldumpsplitter.sh --source filename --extract REGEXP --match_str regular-expression
上面的命令將為指定的“filename”mysqldump文件中的指定正則表達式的表創建sqls,并將其以壓縮格式存儲到單個table-name.sql.gz中。
從mysqldump中提取所有數據庫:
sh mysqldumpsplitter.sh --source filename --extract ALLDBS
上面的命令將從指定的“filename”mysqldump文件中提取所有數據庫,并將其以壓縮格式存儲到單個database-name.sql.gz中。
從mysqldump中提取所有表:
sh mysqldumpsplitter.sh --source filename --extract ALLTABLES
上面的命令將從指定的“filename”mysqldump文件中提取所有表,并將其以壓縮格式存儲到單個table-name.sql.gz中。
從mysqldump中提取表的列表:
sh mysqldumpsplitter.sh --source filename --extract REGEXP --match_str '(table1|table2|table3)'
上面的命令將從指定的“filename”mysqldump文件中提取表,并將它們以壓縮格式存儲到單個table-name.sql.gz中。
從壓縮的mysqldump中提取數據庫:
sh mysqldumpsplitter.sh --source filename.sql.gz --extract DB --match_str 'dbname' --decompression gzip
上面的命令將使用gzip解壓縮filename.sql.gz,從“filename.sql.gz”中提取名為“dbname”的數據庫并將其存儲為out / dbname.sql.gz
以壓縮格式從壓縮的mysqldump中提取數據庫:
sh mysqldumpsplitter.sh --source filename.sql.gz --extract DB --match_str 'dbname' --decompression gzip --compression none
上面的命令將使用gzip解壓縮filename.sql.gz并從“filename.sql.gz”中提取名為“dbname”的數據庫并將其存儲為plain sql out / dbname.sql
從不同文件夾中的mysqldump中提取alltables:
sh mysqldumpsplitter.sh --source filename --extract ALLTABLES --output_dir /path/to/extracts/
上面的命令將從指定的“filename”mysqldump文件中提取所有表,并將壓縮格式的表提取到存儲在/ path / to / extracts /下的各個文件table-name.sql.gz。該腳本將創建文件夾/ p??ath / to / extracts /如果不存在。
從完整轉儲中的一個數據庫中提取一個或多個表:
考慮您有一個包含多個數據庫的完整轉儲,并且您希望從一個數據庫中提取少量表。
Extract single database:
`sh mysqldumpsplitter.sh --source filename --extract DB --match_str DBNAME --compression none`
Extract all tables
`sh mysqldumpsplitter.sh --source out/DBNAME.sql --extract REGEXP --match_str "(tbl1|tbl2)"`
雖然我們可以使用另一個選項在單個命令中執行此操作,如下所示:
sh mysqldumpsplitter.sh --source filename --extract DBTABLE --match_str "DBNAME.(tbl1|tbl2)" --compression none
上面的命令將從當前目錄中文件夾“out”下的sql格式的DBNAME數據庫中提取tbl1和tbl2。
您可以按如下方式提取單個表:
sh mysqldumpsplitter.sh --source filename --extract DBTABLE --match_str "DBNAME.(tbl1)" --compression none
從特定數據庫中提取所有表:
mysqldumpsplitter.sh --source filename --extract DBTABLE --match_str "DBNAME.*" --compression none
上面的命令將以sql格式從DBNAME數據庫中提取所有表,并將其存儲在“out”目錄下。
列出mysqldump文件的內容
mysqldumpsplitter.sh --source filename --desc
上面的命令將列出轉儲文件中的數據庫和表。
另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
當前題目:分割SQL文件-創新互聯
轉載注明:http://vcdvsql.cn/article4/cccpie.html
成都網站建設公司_創新互聯,為您提供網站內鏈、網站改版、網站營銷、營銷型網站建設、手機網站建設、網站導航
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯