2011-11-21 48 views
0

我有一個視圖,它返回了很多數據。現在,該視圖被加載到像這樣的文件:MySQL獲取查看轉儲

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

然後,它從該文件到一個表中加載:

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

然後mysqldump的用於創建該表的轉儲(實際上有多個表,前兩個步驟重複多次,然後運行mysqldump)。

有沒有更好的方法來做到這一點?理想情況下,我想這樣做而不必將任何內容保存到文件中。只用一條語句就可以創建一個來自視圖的數據的SQL轉儲?

回答

1

不適用於mysqldump。 mysqldump只是導出視圖定義,而不是數據。

通過使用INSERT ... SELECT語法,可以減少步驟中的內容。也就是說,從視圖直接插入到新表中。然後mysqldump。不需要file.tmp文件。像

INSERT INTO table SELECT * FROM view; 

另一種可能性是東西寫,你在地方的mysqldump用於導出的意見,就好像它是表的程序。該程序可以檢查視圖結構並以與mysqldump兼容的格式導出數據。

1
INSERT INTO table (col1, col2, col3...) 
    SELECT col1, col2, col3... FROM view 

應該這樣做。