2010-07-15 40 views
3

我有很多與一些前綴開頭的表,搜索簡單的方法來改變一個時間多表中的MySQL

,我想改變這種表

有什麼簡單的方法來做到這一點(而不是運行在所有表)

我的意思是這樣:

ALTER TABLE LIKE tablenameprefix% ADD INDEX `NewIndex1` (`field`); 

我怎麼能做到這一點?

感謝

編輯:

我能做些一種不存儲過程循環? 通過從

選擇表名稱
SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME LIKE 'tableprefix%' 

回答

3

您不能。你可以做的是編寫一個存儲過程,枚舉所有查找前綴的表並執行必要的更改。

2

當我想從的MyISAM更改多個表的引擎InnoDB的,而不是寫一個循環我只是做了一個完整的數據庫轉儲和在文本編輯器中打開它。在文本編輯器中,我只是簡單地將所有MyISAM單詞更改爲InnoDB。

我知道這不是合適的解決方案,但對我來說,寫一個例程比較容易。

0

我犯了一個愚蠢的錯誤,把所有的Wordpress表格與我的產品表放在一起,幸運的是所有的Wordpress表格都以wp_前綴開頭,我所有其他產品表格都沒有這個wp_前綴。

我創建了另一個名爲wordpress的數據庫,現在我想將所有表以wp_開頭移動到該數據庫。

這裏是我做過什麼:

SELECT CONCAT('ALTER TABLE olddb.', table_name, ' RENAME wordpress.', table_name, ';') 
    FROM information_schema.tables 
    WHERE table_schema='olddb' AND table_name LIKE 'wp%' 
    INTO OUTFILE '/tmp/move_to_wordpress'; 
SOURCE /tmp/move_to_wordpress; 

就是這樣。

相關問題