分割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

上面的命令将列出转储文件中的数据库和表。

原文地址:http://blog.51cto.com/xsboke/2316313

时间: 2024-10-09 18:51:24

分割SQL文件的相关文章

python分割sql文件

之前用joomla帮一学校做了个网站,然后要部署到他们到服务器上,他们只提供了sftp和phpmyadmin的账号,上传网站文件倒是挺顺利的,但后来用phpmyadmin导入mysql数据就遇到问题了:由于他们设置的phpmyadmin最大只能导入2M的sql文件,如果太大会导致无法导入成功,但是我的sql文件有17M呀--------- 没得办法,只能分割sql文件了,初学python,于是就当练习,用python写了个分割sql文件的脚本: #由于导出的sql文件总共95张表,每张表前都有这

php导入sql文件

sql php php导入sql文件 基本思路 1.打开sql文件,放入一个变量(字符串类型)当中 2.使用正则替换掉当中的注释("--"与"/**/") 3.使用explode分割成为一个数组并去除每行的空格 4.链接数据库之后使用my_query()执行sql 代码 <?php // +--------------------------------------------------------------------------------------

代码收藏系列--php--加载sql文件并解析成数组

php加载sql文件,解析成以分号分割的数组.(支持存储过程和函数提取,自动过滤注释) /** * 加载sql文件为分号分割的数组 * <br />支持存储过程和函数提取,自动过滤注释 * <br />例如: var_export(load_sql_file('mysql_routing_example/fn_cdr_parse_accountcode.sql')); * @param string $path 文件路径 * @return boolean|array * @sin

将本地sql文件导入到mysql中

cmd命令操作:先创建一个同名数据库,然后通过source导入sql文件 1.启动mysql 2.mysql -uroot -p 输入密码运行mysql 3.创建一个同名数据库 create database <数据库名称>; 如 : create database estoresystem; 4.输入use <数据库名称>; 如: use estoresystem; 5.通过source导入sql文件 cmd下输入:source <数据库文件路径> 如:source 

把文件里的sql文件按从高到下的顺序导进数据库

############# 需求 ############# 依序从上到下把文件里面的每行sql文件导进数据库 ############# 执行方法 ############# sh import_ku.sh 变量1 变量2 变量3 变量1:存储数据库脚本文件名的文件 变量2:数据库用户名 变量3: 数据库密码 代码展示 #!/bin/bash OUTPUT="echo -e" TAILS="\033[0m" GREEN="\033[32m" R

遍历sql文件和项目文件,查询表名出现过的文件

最近在整理项目的数据库的内容,有两个问题是要解决的,一个问题是有些表已经没有在文件里跑了,我需要筛选掉,一个问题是还在用的那些表,分别是在哪些文件里跑的? 数据表我统计了一下,有200+.项目的控制器文件,当然是两个文件夹,一个关于前台的,一个关于后台的. 然后,逻辑上是这样的,先把sql文件遍历一遍,取出所有表名,再把每个表名去两个文件夹里跑一遍. 写这个程序,有三个头是必不可少的: header("Content-type: text/html; charset=utf-8");

Linux培训教程 linux系统下分割大文件的方法

在linux中分割大文件,比如一个5gb日志文件,需要把它分成多个小文件,分割后以利于普通的文本编辑器读取. 有时,需要传输20gb的大文件,Linux培训 教程件到另一台服务器,也需要把它分割成多个文件,这样便于传输数据. 以下通过五个不同的例子,来讲解Linux下分割大文件的方法,供大家参考. 例1.以每个文件1000行分割 split命令分割文件成每个文件1000行,并且文件名依次为 [前缀]aa,[前缀]ab, [前缀]ac等,默认的前缀是X,每个文件的行数为1000行. 命令: 复制代

命令行模式下 MYSQL导入导出.sql文件的方法

一.MYSQL的命令行模式的设置:桌面->我的电脑->属性->环境变量->新建->PATH=“:path\mysql\bin;”其中path为MYSQL的安装路径.二.简单的介绍一下命令行进入MYSQL的方法:1.C:\>mysql -h hostname -u username -p  .C:\>mysql -h localhost -u root-p按ENTER键,等待然后输入密码.这里hostname为服务器的名称,如localhost,username为M

利用PHP执行SQL文件,将SQL文件导入到数据库

如何利用php自动执行.sql文件.其实很简单,就是获取sql文件中的内容,然后将每一句sql语句一次执行就行啦. 这是代码 //读取文件内容 $_sql = file_get_contents('test.sql'); $_arr = explode(';', $_sql); $_mysqli = new mysqli(DB_HOST,DB_USER,DB_PASS); if (mysqli_connect_errno()) { exit('连接数据库出错'); } //执行sql语句 for