如何从一个Dump文件中获取一个、甚至多个表记录
2014-05-25 10:08
337 查看
假设有这么一个场景需要从一个50GB的Dump中提取一张表或者多张表怎么办呢?使用Linux的Grep、Sed还是AWK呢?
转载请尊重原创、保留相关链接本文来自多宝平台 :http://www.mbodb.com
这里使用MySQL自带的mysql_find_rows来实现,下面做个演示说明一下
首先导出mysql库(使用mysql做演示)
[mysql@localhost ~]$ mysqldump -uroot -pxxxxx --databases mysql > mysql.sql
使用mysql_find_rows查找func表
[mysql@localhost ~]$ mysql_find_rows --regexp 'func' mysql.sql | more
--
-- Table structure for table `func`
--
DROP TABLE IF EXISTS `func`;
CREATE TABLE `func` (
`name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
`ret` tinyint(1) NOT NULL DEFAULT '0',
`dl` char(128) COLLATE utf8_bin NOT NULL DEFAULT '',
`type` enum('function','aggregate') CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='User defined functions';
--
如果碰巧要找的表在很多其它表或者列中都包含要查找的表的表明关键字怎么办?可以用下面的方式实现
[mysql@localhost ~]$ mysql_find_rows --regexp '`user`' mysql.sql | more
--
-- Table structure for table `user`
--
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
`User` char(16) COLLATE utf8_bin NOT NULL DEFAULT '',
`Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
`Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
`ssl_cipher` blob NOT NULL,
`x509_issuer` blob NOT NULL,
`x509_subject` blob NOT NULL,
`max_questions` int(11) unsigned NOT NULL DEFAULT '0',
`max_updates` int(11) unsigned NOT NULL DEFAULT '0',
`max_connections` int(11) unsigned NOT NULL DEFAULT '0',
`max_user_connections` int(11) unsigned NOT NULL DEFAULT '0',
`plugin` char(64) COLLATE utf8_bin DEFAULT '',
`authentication_string` text COLLATE utf8_bin,
`password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
PRIMARY KEY (`Host`,`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges';
这样就可以过滤掉了.我们只需要user表.^_^
mysql_find_rows多宝指定从某行开始
mysql_find_rows --start_row=100 mysql.sql --这样就会从100行开始输出
参数--rows=#类似不在重复举例
mysql_find_rows英文参数解释
[mysql@localhost ~]$ mysql_find_rows --help
/usr/local/mysql/bin/mysql_find_rows Ver 1.02
Prints all SQL queries that matches a regexp or contains a 'use
database' or 'set ..' command to stdout. A SQL query may contain
newlines. This is useful to find things in a MySQL update log.
/usr/local/mysql/bin/mysql_find_rows takes the following options:
--help or --Information
Shows this help
--regexp=#
Print queries that matches this.
--start_row=#
Start output from this row (first row = 1)
--skip-use-db
Don't include 'use database' commands in the output.
--rows=#
Quit after this many rows.
原文的英文例子
Example:
/usr/local/mysql/bin/mysql_find_rows --regexp "problem_table" < update.log
/usr/local/mysql/bin/mysql_find_rows --regexp "problem_table" update-log.1 update-log.2
转载请尊重原创、保留相关链接本文来自多宝平台 :http://www.mbodb.com
这里使用MySQL自带的mysql_find_rows来实现,下面做个演示说明一下
首先导出mysql库(使用mysql做演示)
[mysql@localhost ~]$ mysqldump -uroot -pxxxxx --databases mysql > mysql.sql
使用mysql_find_rows查找func表
[mysql@localhost ~]$ mysql_find_rows --regexp 'func' mysql.sql | more
--
-- Table structure for table `func`
--
DROP TABLE IF EXISTS `func`;
CREATE TABLE `func` (
`name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
`ret` tinyint(1) NOT NULL DEFAULT '0',
`dl` char(128) COLLATE utf8_bin NOT NULL DEFAULT '',
`type` enum('function','aggregate') CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='User defined functions';
--
如果碰巧要找的表在很多其它表或者列中都包含要查找的表的表明关键字怎么办?可以用下面的方式实现
[mysql@localhost ~]$ mysql_find_rows --regexp '`user`' mysql.sql | more
--
-- Table structure for table `user`
--
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
`User` char(16) COLLATE utf8_bin NOT NULL DEFAULT '',
`Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
`Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
`ssl_cipher` blob NOT NULL,
`x509_issuer` blob NOT NULL,
`x509_subject` blob NOT NULL,
`max_questions` int(11) unsigned NOT NULL DEFAULT '0',
`max_updates` int(11) unsigned NOT NULL DEFAULT '0',
`max_connections` int(11) unsigned NOT NULL DEFAULT '0',
`max_user_connections` int(11) unsigned NOT NULL DEFAULT '0',
`plugin` char(64) COLLATE utf8_bin DEFAULT '',
`authentication_string` text COLLATE utf8_bin,
`password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
PRIMARY KEY (`Host`,`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges';
这样就可以过滤掉了.我们只需要user表.^_^
mysql_find_rows多宝指定从某行开始
mysql_find_rows --start_row=100 mysql.sql --这样就会从100行开始输出
参数--rows=#类似不在重复举例
mysql_find_rows英文参数解释
[mysql@localhost ~]$ mysql_find_rows --help
/usr/local/mysql/bin/mysql_find_rows Ver 1.02
Prints all SQL queries that matches a regexp or contains a 'use
database' or 'set ..' command to stdout. A SQL query may contain
newlines. This is useful to find things in a MySQL update log.
/usr/local/mysql/bin/mysql_find_rows takes the following options:
--help or --Information
Shows this help
--regexp=#
Print queries that matches this.
--start_row=#
Start output from this row (first row = 1)
--skip-use-db
Don't include 'use database' commands in the output.
--rows=#
Quit after this many rows.
原文的英文例子
Example:
/usr/local/mysql/bin/mysql_find_rows --regexp "problem_table" < update.log
/usr/local/mysql/bin/mysql_find_rows --regexp "problem_table" update-log.1 update-log.2
相关文章推荐
- java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容
- 如何调用MFC中的函数打开一个系统资源面板,获取文件
- [转]如何在batch文件中把当前的路径记录在一个变量里,并运用这个变量?
- 如何从一个类的ViewController,如何获取一个UIView上的某种控件
- 如何从逻辑备份的dumpfile文件里获取DDL脚本?
- git如何查看某一个文件的详细提交记录
- JAVA 程序中如何拷贝一个目录下的文件及子目录到另一个目录,如何获取系统环境变量等...
- 如何通过ADO,获取一个数据库文件里面所有的表?
- 如何从逻辑备份的dumpfile文件里获取DDL脚本?
- 如何获取一个文件的大小
- 如何用DOS命令,获取一个目录下的文件数目
- 如何获取一个文件的编码方式
- 如何使用asp.net中的控件将一个图片文件从一个目录传到另外一个目录下?
- 复制一个文件或者从一个资源获取一个文件并复制
- 如何利用代码从网站上获取一个文件的大小,并且下载时不出现保存提示框
- window上如何设置才能获取dump文件
- 如何有效合并两个文件:一个是1亿条的用户基本信息,另一个是用户每天看电影连续剧等的记录,5000万条。其中内存只有1G。
- 如何使用gcore工具获取一个core文件而不重启应用?
- git如何查看某一个文件的详细提交记录
- ios中如何用一个格式获取多个文件目录中的全部文件