PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Dịch truy vấn từ Firebird sang PostgreSQL

Postgres có một cách khác để lưu trữ thông tin về nội dung hệ thống. Đây được gọi là Danh mục hệ thống .

Trong Firebird, truy vấn của bạn về cơ bản trả về một hàng cho mọi cột của bảng trong mọi lược đồ với một cột Số nguyên bổ sung ánh xạ tới một kiểu dữ liệu trường.

Trong Postgres bằng cách sử dụng bảng hệ thống trong pg_catalog lược đồ có thể đạt được điều gì đó tương tự bằng cách sử dụng truy vấn này:

SELECT 
  TRIM(c.relname) AS table_name, TRIM(a.attname) AS column_name, a.atttypid AS field_type
FROM pg_class c
LEFT JOIN pg_attribute a ON 
  c.oid = a.attrelid
  AND a.attnum > 0 -- only ordinary columns, without system ones
WHERE c.relkind = 'r' -- only tables
ORDER BY 1,2

Truy vấn trên cũng trả về danh mục hệ thống. Nếu bạn muốn loại trừ chúng, bạn cần thêm một JOIN khác vào pg_namespace và mệnh đề where với pg_namespace.nspname <> 'pg_catalog' , bởi vì đây là giản đồ nơi lưu trữ danh mục hệ thống.

Nếu bạn cũng muốn xem tên kiểu dữ liệu thay vì số đại diện của chúng, hãy thêm một JOIN vào pg_type .

Lược đồ thông tin bao gồm bộ sưu tập các quan điểm. Trong hầu hết các trường hợp, bạn không cần toàn bộ truy vấn SQL đứng đằng sau dạng xem, vì vậy việc sử dụng bảng hệ thống sẽ mang lại cho bạn hiệu suất tốt hơn. Tuy nhiên, bạn có thể kiểm tra định nghĩa dạng xem, chỉ để bắt đầu với các bảng và điều kiện được sử dụng để tạo kết quả đầu ra.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng trình kích hoạt Postgres để chỉ ghi lại JSON của các trường đã sửa đổi

  2. JavaScript này yêu cầu gì?

  3. postgresql:kết quả theo thứ tự

  4. Làm thế nào để xử lý một giá trị tùy chọn được trả về bởi một truy vấn bằng cách sử dụng thùng postgres?

  5. PostgreSQL 9.3:Cách chèn UUID viết hoa vào bảng