Nhận truy vấn SQL tương đương cho bất kỳ lệnh meta Postgres nào


11

Tôi hy vọng tiêu đề là tự mô tả. Tôi muốn có thể bằng cách nào đó có thể dịch bất kỳ lệnh meta Postgres nào thành truy vấn SQL tương ứng / cơ bản của nó, ít nhất là để tìm hiểu thêm về Postgres và cách nó lưu trữ thông tin meta trong các bảng của nó.

Bất kỳ ý tưởng nếu điều này là có thể?

Ví dụ:

Khi được kết nối với cơ sở dữ liệu VÍ DỤ \dtSELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;trả về kết quả tương tự.

Tôi muốn tìm, nếu có thể, một cách để có được giá trị SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;khi nhập \dtvào hàm / macro / bất cứ thứ gì.

Câu trả lời:


17

Dễ dàng và rất hữu ích: bạn có thể khởi chạy psql bằng công tắc thích hợp (-E) để lấy thông tin.

me@mystation:~/ > psql -E 
psql (9.3.11)
Type "help" for help.
me@mystation # \d
********* QUERY **********
SELECT n.nspname as "Schema",
  c.relname as "Name",
  CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' END as "Type",
  pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','v','m','S','f','')
      AND n.nspname <> 'pg_catalog'
      AND n.nspname <> 'information_schema'
      AND n.nspname !~ '^pg_toast'
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;

Hãy xem http://www.postgresql.org/docs/civerse/static/app-psql.html để biết thêm thông tin. Khi ở trong psql, bạn cũng có thể đặt biến ECHO_HIDDEN .


1
rất hứa hẹn! nhưng khi tôi cố gắng để có được một định nghĩa bảng với 'psql -E mytable' thì nó báo cáo một số truy vấn, không có câu trả lời nào hữu ích khi được phát hành riêng lẻ, do đó, một cái gì đó không được báo cáo đang diễn ra.
philwalk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.