合并表上的mysqldump

时间:2012-04-12 17:01:19

标签: mysql mysqldump myisam

我似乎无法使用mysqldump转储已创建为MyISAM合并表的表。

当我尝试时,它只是转储一个文件,其中包含create table语法(正确),但不包含基础表中的任何数据。

这是预期的还是已知的错误?如何在MRG_MyISAM表上复制mysqldump的行为?

2 个答案:

答案 0 :(得分:1)

这应该是预料之中的。 MERGE表只是MyISAM表的映射。

您必须转储基础表。

如果你想要某种模拟到mysqldump的MERGE表(对于一个名为mydb.mymergetable的表,其存储引擎是Mrg_MyISAM)

USE mydb
CREATE TABLE myhardtable LIKE mymergetable;
ALTER TABLE myhardtable ENGINE=MyISAM;
INSERT INTO myhardtable SELECT * FROM mymergetable;

现在,只需这样做:

mysqldump -u... -p... mydb myhardtable > /root/MyMergeData.sql

您也可以这样做

SELECT * INTO OUTFILE '/root/MyMergeData.sql'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
FROM mydb.myhardtable;

答案 1 :(得分:0)

MySQL列出了MyISAM合并表的一些常见问题。如果没有更多代码,我无法确定您的具体问题,但这是一个很好的起点:http://dev.mysql.com/doc/refman/5.1/en/merge-table-problems.html