我有一个返回很多数据的视图。现在,该视图已加载到如下文件中:

SELECT * FROM view INTO OUTFILE /path/to/file.tmp;


然后将其从该文件加载到表中:

LOAD DATA INFILE /path/to/file.tmp INTO TABLE table;


然后使用mysqldump创建该表的转储(实际上是多个表,前两个步骤重复多次,然后运行mysqldump)。

有一个更好的方法吗?理想情况下,我想这样做而不必将任何内容保存到文件中。是否可以使用单个语句从视图创建数据的sql转储?

最佳答案

不能与mysqldump一起使用。 mysqldump只是导出视图定义,而不是数据。

您可以使用INSERT ... SELECT语法一步一步地减少所获得的内容。也就是说,从视图直接插入到新表中。然后mysqldump。不需要file.tmp文件。就像是

INSERT INTO table SELECT * FROM view;


另一种可能性是编写一个程序来代替mysqldump来导出视图,就好像它是一个表一样。该程序可以检查视图结构并以与mysqldump兼容的格式导出数据。

10-06 14:57