溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

分割SQL文件

發(fā)布時間:2020-07-15 14:44:03 來源:網絡 閱讀:1343 作者:小生博客 欄目:MySQL數(shù)據庫

小生博客: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=

mysqldumpsplitter食譜:

從mysqldump中提取單個數(shù)據庫:
sh mysqldumpsplitter.sh --source filename --extract DB --match_str database-name

上面的命令將從指定的“filename”sql文件為指定的數(shù)據庫創(chuàng)建sql,并將其以壓縮格式存儲到database-name.sql.gz。

從mysqldump中提取單個表:
sh mysqldumpsplitter.sh --source filename --extract TABLE --match_str table-name

上面的命令將從指定的“filename”mysqldump文件為指定的表創(chuàng)建sql,并將其以壓縮格式存儲到database-name.sql.gz。

從mysqldump中提取與正則表達式匹配的表:
sh mysqldumpsplitter.sh --source filename --extract REGEXP --match_str regular-expression

上面的命令將為指定的“filename”mysqldump文件中的指定正則表達式的表創(chuàng)建sqls,并將其以壓縮格式存儲到單個table-name.sql.gz中。

從mysqldump中提取所有數(shù)據庫:
sh mysqldumpsplitter.sh --source filename --extract ALLDBS

上面的命令將從指定的“filename”mysqldump文件中提取所有數(shù)據庫,并將其以壓縮格式存儲到單個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ù)據庫:
sh mysqldumpsplitter.sh --source filename.sql.gz --extract DB --match_str 'dbname' --decompression gzip

上面的命令將使用gzip解壓縮filename.sql.gz,從“filename.sql.gz”中提取名為“dbname”的數(shù)據庫并將其存儲為out / dbname.sql.gz

以壓縮格式從壓縮的mysqldump中提取數(shù)據庫:
sh mysqldumpsplitter.sh --source filename.sql.gz --extract DB --match_str 'dbname' --decompression gzip --compression none

上面的命令將使用gzip解壓縮filename.sql.gz并從“filename.sql.gz”中提取名為“dbname”的數(shù)據庫并將其存儲為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。該腳本將創(chuàng)建文件夾/ p??ath / to / extracts /如果不存在。

從完整轉儲中的一個數(shù)據庫中提取一個或多個表:
考慮您有一個包含多個數(shù)據庫的完整轉儲,并且您希望從一個數(shù)據庫中提取少量表。

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)"`
雖然我們可以使用另一個選項在單個命令中執(zhí)行此操作,如下所示:

sh mysqldumpsplitter.sh --source filename --extract DBTABLE --match_str "DBNAME.(tbl1|tbl2)" --compression none

上面的命令將從當前目錄中文件夾“out”下的sql格式的DBNAME數(shù)據庫中提取tbl1和tbl2。

您可以按如下方式提取單個表:

sh mysqldumpsplitter.sh --source filename --extract DBTABLE --match_str "DBNAME.(tbl1)" --compression none

從特定數(shù)據庫中提取所有表:
mysqldumpsplitter.sh --source filename --extract DBTABLE --match_str "DBNAME.*" --compression none

上面的命令將以sql格式從DBNAME數(shù)據庫中提取所有表,并將其存儲在“out”目錄下。

列出mysqldump文件的內容
mysqldumpsplitter.sh --source filename --desc

上面的命令將列出轉儲文件中的數(shù)據庫和表。
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI