2014-11-17 18 views
9

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?

+3

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

+0

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ả. –

+0

@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

Trả lời

18

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.

+0

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

+0

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

+0

Đây là một ví dụ: http://sqlfiddle.com/#!4/898b1/1 – DirkNM

7

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; 
/
+1

Tôi cũng thêm CASCADE CONSTRAINTS – Multisync

+2

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

+0

@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

1

Đầ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.

0
  1. Chọn từ danh sách ở bên trái tất cả các bảng bạn muốn thả. Kéo và thả chúng vào trang tính của bạn. Chọn Tên đối tượng từ cửa sổ bật lên
  2. Bấm menu Chỉnh sửa và chọn Thay thế.
  3. Nhập vào trường tìm kiếm biểu tượng dấu phẩy ,
  4. Nhập trường thay thế văn bản sau ;\ndrop table. Lưu ý rằng có một dấu cách sau bảng từ. Thay thế tất cả.
  5. Nhập drop table trước bàn đầu tiên và ; sau lần cuối cùng.
  6. Bạn đã sẵn sàng để thả các bảng của mình.
Các vấn đề liên quan