到目前为止我得到了这个:
$ bzcat mysqldump.pplware.sql.bz2 | grep -A 10 "^CREATE TABLE.*"
CREATE TABLE `wp_ak_twitter` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`tw_id` varchar(255) NOT NULL,
`tw_text` varchar(255) NOT NULL,
`tw_reply_username` varchar(255) DEFAULT NULL,
`tw_reply_tweet` varchar(255) DEFAULT NULL,
`tw_created_at` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `tw_id` (`tw_id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
--
CREATE TABLE `wp_audit_trail` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`operation` varchar(40) NOT NULL DEFAULT '',
`user_id` int(11) NOT NULL,
`ip` int(11) unsigned NOT NULL DEFAULT '0',
`happened_at` datetime NOT NULL,
`item_id` int(11) DEFAULT NULL,
`data` longtext,
`title` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9442523 DEFAULT CHARSET=latin1;
..等等。 但 10 行限制是任意的,有些 CREATE TABLES 较短,有些较长。如何获得所有完整的 CREATE TABLE 定义?
最佳答案
如何在模式之间打印行:CREATE TABLE
和 ;
分号:-
bzcat mysqldump.pplware.sql.bz2 | awk '/CREATE TABLE/{f=1}/\;/{f=0}f||/\;/'
或者
bzcat mysqldump.pplware.sql.bz2 | awk '/CREATE TABLE/,/\;/'
关于mysql - 如何从 mysql 转储中获取所有完整的 CREATE TABLE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47657581/