分割SQL文件

小生博客:http://xsboke.blog.51cto.com

小生 Q Q:1770058260

                            -------謝謝您的參考,如有疑問,歡迎交流

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=

mysqldumpsplitter食譜:

從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

上面的命令將列出轉儲文件中的數據庫和表。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章