我有一个返回大量数据的 View 。现在, View 被加载到如下文件中:
SELECT * FROM view INTO OUTFILE /path/to/file.tmp;
然后将其从该文件加载到表中:
LOAD DATA INFILE /path/to/file.tmp INTO TABLE table;
然后使用mysqldump创建该表的转储(实际上是多个表,前两个步骤重复多次,然后运行mysqldump)。
有更好的方法吗?理想情况下,我希望无需将任何内容保存到文件中即可执行此操作。是否可以仅使用一条语句从 View 中创建数据的 SQL 转储?
最佳答案
不适用于 mysqldump。 mysqldump 仅导出 View 定义,而不导出数据。
您可以使用 INSERT ... SELECT
逐步减少您所拥有的资源。句法。也就是说,从 View 直接插入到新表中。然后 mysqldump 那个。不需要 file.tmp 文件。类似的东西
INSERT INTO table SELECT * FROM view;
另一种可能性是编写一个程序来代替 mysqldump 来导出 View ,就好像它是一个表一样。该程序可以检查 View 结构并以与 mysqldump 兼容的格式导出数据。
关于MySQL 获取 View 转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8215817/