导入时更改 mysql table 存储引擎

change mysql table storage engine upon import

我们有一些客户向我们发送 mysql 数据库 sql 文件,其中有时表引擎是 myISAM,在将其导入我们的数据库时或之前,我们需要将表转换为 InnoDB。这可能吗?

干杯, 彼得

如果你有幸登上linux

sed -i 's/engine=myisam/engine=innodb/gi' userfile.sql

这假设数据本身不包含确切的文本engine=myisam你可以像这样让它更严格一点:

sed -i 's/) ENGINE=InnoDB/) ENGINE=MyISAM/g' junk.sql

table 创建语句如下所示:

CREATE TABLE `Table1` (
  `user_id` int(11) DEFAULT NULL,
  `user_name` varchar(5) DEFAULT NULL,
  `user_rating` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

在 sed 的第二次使用中,我们使其区分大小写,它还会查找 ENGINE 关键字之前的 ) 和 ' ' 字符