我有一个返回很多数据的视图。现在,该视图已加载到如下文件中:
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兼容的格式导出数据。