Tôi có năm mươi bảng trong cơ sở dữ liệu, trong đó tôi chỉ cần sáu bảng.Oracle - thả nhiều bảng trong một truy vấn
Làm cách nào để xóa các bảng còn lại của một truy vấn?
Tôi có năm mươi bảng trong cơ sở dữ liệu, trong đó tôi chỉ cần sáu bảng.Oracle - thả nhiều bảng trong một truy vấn
Làm cách nào để xóa các bảng còn lại của một truy vấn?
Bạn có thể tạo một danh sách các DROP TABLE lệnh với truy vấn dưới đây:
SELECT 'DROP TABLE ' || table_name || ';' FROM user_tables;
Sau đó bạn loại bỏ sáu bảng bạn muốn giữ và thực hiện các lệnh khác. Hoặc bạn thêm mệnh đề WHERE table_name NOT IN (...)
vào truy vấn.
Hy vọng điều đó sẽ hữu ích.
nó là đưa ra lỗi khi tôi chạy.SQL Lỗi: ORA-00942: bảng hoặc xem không tồn tại. Tôi đã sử dụng truy vấn SELECT 'DROP TABLE' || table_name || ';' FROM pmd_dba; ở đây pmd_dba là cơ sở dữ liệu – vim
Không, bạn phải sử dụng 'user_tables'. Đó là một cái nhìn của tất cả các bảng mà bạn là chủ sở hữu. – DirkNM
Đây là một ví dụ: http://sqlfiddle.com/#!4/898b1/1 – DirkNM
Sử dụng một cái gì đó như thế này, như không có chỉ huy trực tiếp hoặc cách thức oracle để làm điều này
begin
for rec in (select table_name
from all_tables
where table_name like '%ABC_%'
)
loop
execute immediate 'drop table '||rec.table_name;
end loop;
end;
/
Tôi cũng thêm CASCADE CONSTRAINTS – Multisync
Và tôi sẽ sử dụng 'user_tables' thay vì' all_tables'. Nếu không, có thể thả một bảng có cùng tên trong lược đồ khác (Nếu bạn có quyền DROP). – DirkNM
@Deepu trong mệnh đề where chúng ta có thể sử dụng toán tử "not in" và sau đó chúng ta đặt tất cả sáu tên trên đó? – vim
Đầu tiên Chạy truy vấn này với tên bảng mà bạn muốn giữ.
SELECT CONCAT('DROP TABLE ', GROUP_CONCAT(table_name) , ';')
AS statement FROM information_schema.tables
WHERE table_schema = 'mydatabase' AND table_name not in ('table1', 'table2', 'table3');
Truy vấn này sẽ cung cấp cho bạn truy vấn bảng DROP.
,
;\ndrop table
. Lưu ý rằng có một dấu cách sau bảng từ. Thay thế tất cả.drop table
trước bàn đầu tiên và ;
sau lần cuối cùng.
Nếu tôi là bạn, tôi sẽ xuất sáu bảng, thả mọi thứ và khôi phục sáu bảng. – Raptor
Bạn không có bất kỳ công cụ nào như SQL Developer hay Toad? Chỉ cần nhấp vào các bảng (sử dụng shift và ctrl nếu bạn thích), sau đó nhấp vào Thả. –
@ThorstenKettner Tôi có nhà phát triển sql nhưng vấn đề là tôi có thể chọn nhiều bảng nhưng sau khi chọn nhiều bảng, nó không đưa ra tùy chọn "Thả". – vim