导入时更改 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 关键字之前的 ) 和 ' ' 字符
我们有一些客户向我们发送 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 关键字之前的 ) 和 ' ' 字符