您好,登錄后才能下訂單哦!
小生博客: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
上面的命令將列出轉儲文件中的數據庫和表。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。