首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将巨大的MyISAM表以块的形式导出到InnoDB?

问如何将巨大的MyISAM表以块的形式导出到InnoDB?
EN

Stack Overflow用户
提问于 2011-08-04 15:21:25
回答 2查看 791关注 0票数 0

我正在使用MySQL工作台将一些巨大的(数百万行) MyISAM表更改为InnoDB。在克隆表之后,我通过ALTER TABLE...和INSERT INTO othertable SELECT * FROM mytable进行了尝试,但似乎表太大了。工作台因与服务器连接丢失而退出.

因此,我想我可以创建一个SQL脚本,它可以遍历大约10000个条目,并将MyISAM表的内容以块的形式复制到InnoDB表中。

由于似乎没有for循环SQL,所以我想知道是否有人建议如何实现这一点?

代码语言:javascript
复制
INSERT INTO `latest`.`AUTHORS` (author_id, author_name)
SELECT
`author_names`.`author_name_id`,
`author_names`.`name`
FROM `pubmap_latest`.`dblp_author_names`;

这是我想要以块形式运行的查询。count(*)-query返回985330行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-04 15:58:59

我将使用mysqldump (命令行工具)从旧表导出数据,然后将其导入到新表中。类似于:

mysqldump database table > file.sql

然后编辑文件中的表名和类型,然后:

mysql database < file.sql

票数 1
EN

Stack Overflow用户

发布于 2011-08-04 15:44:46

在MySQL中,您可以在SELECT语句中使用LIMIT关键字,定义要显示多少结果行。将此与偏移量相结合,您可以将您的表分割成块。当然,当将表分割成块时,您应该使用order子句来处理相同的结果集。

代码语言:javascript
复制
SELECT `author_names`.`author_name_id`, `author_names`.`name`
FROM `pubmap_latest`.`dblp_author_names`
ORDER BY  `author_names`.`author_name_id`
LIMIT 10000 OFFSET 0
INTO OUTFILE dblp_author_names_0.sql

对于偏移,你必须使用10000,20000,30000,.

将结果加载到

代码语言:javascript
复制
LOAD DATA INFILE ...

请参考MySQL 5.1参考手册。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6944073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档