2010-05-18 30 views
11

Tôi đang cố gắng lọc tất cả các bảng trong cơ sở dữ liệu SQLite dựa trên chúng nếu chúng là các bảng hệ thống hoặc các bảng do người dùng tạo ra.Danh sách các bảng hệ thống trong SQLite

Cho đến nay tôi đã phát hiện ra rằng chúng là những cái có tiền tố sqlite_ và AllDataTypes.

Có ai đã làm điều gì đó như thế này không? Có danh sách nào không?

Xin cảm ơn trước.

Trả lời

17

Chỉ có một bảng hệ thống có bất kỳ hậu quả nào.

select * from sqlite_master 

nhưng bạn có thể nhận được một số thông tin hữu ích từ sqlite_sequence,

+0

Có, nhưng tôi cần lọc tất cả. Tôi phải có phương tiện để có được tất cả các bảng hệ thống không. – sovanesyan

+1

cũng có 'sqlite_temp_master' –

7

tôi nghĩ rằng nó có thể được lọc theo tên (như bạn đã thực hiện)

Tôi đã sử dụng kịch bản

SELECT 
    name, type 
FROM 
    sqlite_master 
WHERE 
    type in ('table', 'view') 
AND 
    name not like 'sqlite?_%' escape '?' 
1

sqlite_autoindex_TABLE_N - sẽ có thông tin UNIQUE và PRIMARY KEY constraints trên bảng thông thường.

sqlite_statN - sẽ có N là một số nguyên. Các bảng như vậy lưu trữ số liệu thống kê cơ sở dữ liệu được thu thập bởi lệnh ANALYZE và được sử dụng bởi trình hoạch định truy vấn để giúp xác định thuật toán tốt nhất để sử dụng cho mỗi truy vấn.

Nguồn: https://www.sqlite.org/fileformat2.html

sqlite_user - bảng này sẽ có mặt, nếu chúng ta thiết lập cơ sở dữ liệu xác thực-yêu cầu.

Nguồn: http://www.sqlite.org/src/doc/trunk/ext/userauth/user-auth.txt

Các vấn đề liên quan