0
A
回答
0
執行以下命令:
BEGIN
FOR table_ IN (SELECT * FROM dba_tables where owner like 'YOUR_SCHEMA') LOOP
execute immediate 'truncate table ' || table_.owner || '.' || table_.table_name ||' cascade';
END LOOP;
END;
/
+0
由於外鍵導致無法工作。您不能「截斷」作爲外鍵目標的表。 –
0
有兩種方式:
您可以使用功能
delete
代替truncate
這個功能,你不應該禁用的限制,但它更慢,因爲你的工作如果你願意這樣做,可以回滾此操作:BEGIN FOR table_ IN (SELECT * FROM dba_tables where owner like 'YOUR_SCHEMA') LOOP execute immediate 'delete from table ' || table_.owner || '.' || table_.table_name; END LOOP; END;
使用
truncate
是比較快,但是你必須魔鬼制約表:begin for disable_constraint_ in (select * from dba_constraints where owner= 'YOUR_SCHEMA' ) loop execute immediate 'alter table ' || disable_constraint_.owner || '.' || disable_constraint_.table_name ||' disable constraint '|| disable_constraint_.constraint_name; end loop; for table_ in (select * from dba_tables where owner = 'YOUR_SCHEMA') loop execute immediate 'truncate table ' || table_.owner || '.' ||table_.table_name ||' cascade'; end loop; for enable_constaint_ in (select * from dba_constraints where owner= 'YOUR_SCHEMA') loop execute immediate 'alter table ' || enable_constaint_.owner || '.' || enable_constaint_.table_name ||' enable constraint '|| enable_constaint_.constraint_name; end loop; end;
0
BEGIN
FOR T in (SELECT table_name FROM user_tables) LOOP
EXECUTE IMMEDIATE 'ALTER TABLE '||T.table_name||' DISABLE ALL CONSTRAINTS';
--This will disable all the constraint
END LOOP;
FOR T in (SELECT table_name FROM user_tables) LOOP
EXECUTE IMMEDIATE 'TRUNCATE TABLE '||T.table_name;
END LOOP;
FOR T in (SELECT table_name FROM user_tables) LOOP
EXECUTE IMMEDIATE 'ALTER TABLE '||T.table_name||' ENABLE ALL CONSTRAINTS';
END LOOP;
END;
修改表...禁用所有的約束拋出一個ORA-01735:無效的ALTER TABLE選項,如果有沒有爲該表定義約束,如果至少有一個沒有約束的表,則會導致腳本無法截斷每個表。您可能希望立即將執行放在一個開始 - 區塊內
相關問題
- 1. 如何從Oracle數據庫中獲取所有已刪除的數據?
- 2. 刪除SQL Server數據庫中的所有數據
- 3. 使用LINQ to SQL刪除數據庫中的所有記錄
- 4. 如何從SQL服務器數據庫中刪除所有數據庫索引
- 5. 如何刪除SQL Server數據庫中的所有表?
- 6. 如何使用SqlCommand刪除數據庫中的所有表?
- 7. 如何從數據庫表中刪除所有數據?
- 8. 刪除庫中的所有數據集
- 9. 如何在sqlplus oracle中刪除表中的所有數據
- 10. 如何從SQL數據庫中刪除
- 11. 如何使用MongoAlchemy刪除數據庫的所有內容
- 12. 從SQL Server數據庫中的所有表數據刪除,除了一些表
- 13. C#如何獲取Oracle數據庫中的所有數據
- 14. 使用php刪除數據庫中的SQL數據頁面
- 15. 如何清理數據庫,使用sqlalchemy刪除所有記錄?
- 16. MySQL的程序來刪除數據庫中的所有數據
- 17. 如何使用PL/SQL從所有的oracle數據庫表中刪除重複的行?
- 18. 無法刪除數據從oracle數據庫使用php
- 19. 如何刪除CouchDB中的數據庫中的所有記錄?
- 20. 如何刪除SQL CE中表中的所有數據?
- 21. 如何使用R刪除SQL數據庫中的第1列
- 22. 刪除SQL Server 2005數據庫中的所有行
- 23. 刪除/替換SQL數據庫中的所有圖像
- 24. 如何刪除Sql Server數據庫
- 25. 如何刪除SQL數據庫? sp_delete_database_backuphistory woes
- 26. 刪除從數據庫中的所有行除第一拖行中的Oracle
- 27. Azure SQL數據倉庫 - 如何刪除數據庫?
- 28. 如何從數據庫中刪除特定數據(SQL/PHP)
- 29. 刪除數據庫SQL PHP
- 30. SQL數據庫刪除
http://stackoverflow.com/questions/4393/drop-all-tables-whose-names-begin-with-a-certain-string只需更改'drop'到'truncate'。 – Matt
這個問題是針對SQL服務器的,表詳細信息存儲在All_tables/USER_TABLES/dba_TABLES [see here](http://docs.oracle.com/cd/B28359_01/server.111/b28310/tables014.htm)中,而不是信息架構。 – learningNew
如果您的問題即將找到一個解決方案,該解決方案只選擇您創建的表以及相同的登錄用戶和相同的架構,我認爲沒有解決方案! )。 –