2016-02-13 49 views
1

我想創建檢測腳本,並滴在我的posgresql數據庫中的公共表...創建腳本,刪除幾個表(PostgreSQL的)

我建立請求如下:

SELECT CONCAT('DROP TABLE ', table_schema,'.',table_name,';') AS stmt FROM information_schema.TABLES 
WHERE table_schema='public' AND table_catalog='capsana' 

這裏是我

enter image description here

我現在想以自動方式執行該命令(在語句列)的輸出的屏幕截圖..而不d oing複製粘貼!

有沒有辦法做到這一點?

回答

1

你可以使用動態sql來做到這一點;

DO $$ 
DECLARE 
    drop_stmt text; 
BEGIN 
    FOR drop_stmt IN 
    SELECT CONCAT('DROP TABLE ', table_schema,'.',table_name) AS stmt 
    FROM information_schema.TABLES 
    WHERE table_schema='public' AND table_catalog='capsana' LOOP 
     EXECUTE drop_stmt; 
    END LOOP; 
END$$; 
+0

當我執行這個命令,它說: 錯誤:循環超過行循環變量必須是一個記錄或者行變量或標量變量 8號線的名單:因我 ^ *** ******* Erreur ********** – taboubim

+0

我使用PostgreSQL的pgAdmin ... – taboubim

+0

更新了我的答案。斯蒂爾得到錯誤? – Praveen