我正在使用 MySQL Workbench 将一些巨大(数百万行)MyISAM 表更改为 InnoDB。我在克隆表后通过 ALTER TABLE...
和 INSERT INTO othertable SELECT * FROM mytable
进行了尝试,但似乎表太大了。工作台退出并出现有关与服务器的连接丢失...的错误。
所以我想我可以编写一个 SQL 脚本,每 10000 个条目左右循环一次,并将 MyISAM 表的内容分块复制到 InnoDB 表。
由于似乎没有for循环SQL,我想知道是否有人建议如何实现这一点?
INSERT INTO `latest`.`AUTHORS` (author_id, author_name)
SELECT
`author_names`.`author_name_id`,
`author_names`.`name`
FROM `pubmap_latest`.`dblp_author_names`;
这是我想要分块运行的查询。 count(*)
-查询返回 985330 行。
最佳答案
我将使用mysqldump(命令行工具)从旧表中导出数据,然后将其导入到新表中。像这样的东西:
mysqldump database table > file.sql
然后编辑表名称并在文件中键入:
mysql database < file.sql
关于mysql - 如何将巨大的MyISAM表分块导出到InnoDB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6944073/