PostgreSQL

Hiển thị danh sách các schema (lược đồ) đã tạo

Hiển thị danh sách các schema (lược đồ) đã tạo
Được viết bởi Minh Hoàng

Series chia sẻ về PostgreSQL – Cơ sở dữ liệu mã nguồn mở tiên tiến nhất thế giới.

Bài viết này sẽ mô tả cách lấy danh sách lược đồ được tạo trong PostgreSQL.

1. Sử dụng lệnh dn

1. Sử dụng lệnh \dn

Đầu tiên là sử dụng metacommand psql. Để có được danh sách các schema đã tạo, chúng ta thực hiện lệnh \dn sau khi kết nối với cơ sở dữ liệu đích.

Kết nối đến database mydb để kiểm tra xem mydb đang có những schema nào.

\dn

Hiển thị danh sách các schema (lược đồ) đã tạo - Hình 1

Trong cơ sở dữ liệu mydb hiện được kết nối, ngoài schema public được tạo theo mặc định mỗi khi schema được tạo, thì còn có lược đồ myschema, myschema1 được sở hữu bởi user postgres và lược đồ myschema2, minhhoangblog được sở hữu bởi user minhminh.

Nếu bạn thêm dấu cộng + vào lệnh \dn và thực thi nó, bạn có thể hiển thị thêm các đặc quyền truy cập được thêm vào schema.

\dn+

Hiển thị danh sách các schema (lược đồ) đã tạo - Hình 2

2. Lấy từ danh mục hệ thống pg_namespace

2. Lấy từ danh mục hệ thống pg_namespace

Tiếp theo là phương pháp lấy từ pg_namespace – một trong những danh mục hệ thống (system catalog) của PostgreSQL.

※Danh mục hệ thống là một bảng được sử dụng bởi hệ thống quản lý PostgreSQL và được sử dụng để quản lý thông tin như cơ sở dữ liệu và bảng (table). pg_namespace có các cột sau:

Tên cột Kiểu dữ liệu Mô tả
oid oid Định danh – identifier (không thể có được trừ khi được chỉ định)
nspname name Tên của namespace
nspowner oid Owner của namespace
nspacl aclitem[] Danh sách các đặc quyền truy cập (access privileges)

Sau khi kết nối với cơ sở dữ liệu đích mydb, thử lấy dữ liệu từ pg_namespace

SELECT nspname, nspowner, nspacl FROM pg_namespace;

Hiển thị danh sách các schema (lược đồ) đã tạo - Hình 3

Chúng ta đã lấy được danh sách các schema có trong cơ sở dữ liệu mydb hiện được kết nối. Trong đó, các schema bắt đầu bằng pg_ được sử dụng bởi hệ thống PostgreSQL và information_schema cũng được sử dụng bởi hệ thống.

Lưu ý rằng nspowner – đại diện cho chủ sở hữu của schema và kết quả trên đang hiển thị giá trị số oid của danh mục hệ thống pg_authid quản lý dữ liệu về role, vì vậy để có được role name thực tế sẽ tham chiếu đến tên rolname của pg_authid.

Thực hiện lệnh như sau:

SELECT nspname, pg_authid.rolname as schemaowner, nspacl 
  FROM pg_namespace 
  JOIN pg_authid ON pg_authid.oid = pg_namespace.nspowner;

Hiển thị danh sách các schema (lược đồ) đã tạo - Hình 4

Chúng ta đã nhận được một danh sách các schema bao gồm tên vai trò (schemaowner) của chủ sở hữu schema.

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi!

Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp bạn đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[...]

Translate »