답변:
PostgreSQL 로그 파일에서 "pg_dump -t table -s"가 실제로하는 일을 추적 할 수 있습니다. 그런 다음 동일한 방법을 사용하여 고유 한 SQL 함수를 작성할 수 있습니다.
pg_dump :
pg_dump -st tablename dbname
또는 PostgreSQL GUI 도구 (pgAdmin, phpPgAdmin 등)를 사용하십시오.
--schema-only
스키마 / 테이블을 작성하기 위해 SQL 문을 표시하십시오. 어떻게 든이 출력을 C # 프로그램에 공급할 수 있습니다.
.tar
에서 restore.sql
파일을 가져옵니다 . 모든 create 문이 있습니다.
명령 행 ( psql
)에서 다음을 실행 \d <table name>
하여 모든 열, 해당 유형 및 색인을 나열 할 수 있습니다 .
@CubicalSoft의 답변의 첫 번째 부분을 기반으로 간단한 테이블에서 작동 해야하는 다음 함수를 드롭 할 수 있습니다 (기본 '공개'스키마를 가정하고 제약 조건, 인덱스 및 사용자 정의 데이터 형식 등을 생략합니다). @RJS 답변은 현재 올바르게 수행 할 수있는 유일한 방법입니다. 이것은 psql에 내장되어야하는 것입니다!
CREATE OR REPLACE FUNCTION show_create_table(table_name text, join_char text = E'\n' )
RETURNS text AS
$BODY$
SELECT 'CREATE TABLE ' || $1 || ' (' || $2 || '' ||
string_agg(column_list.column_expr, ', ' || $2 || '') ||
'' || $2 || ');'
FROM (
SELECT ' ' || column_name || ' ' || data_type ||
coalesce('(' || character_maximum_length || ')', '') ||
case when is_nullable = 'YES' then '' else ' NOT NULL' end as column_expr
FROM information_schema.columns
WHERE table_schema = 'public' AND table_name = $1
ORDER BY ordinal_position) column_list;
$BODY$
LANGUAGE SQL STABLE;
나는이 파티에 조금 늦었다는 것을 알고 있지만 이것이 Google 검색의 첫 번째 결과 였으므로 내가 생각 해낸 내용에 답할 것이라고 생각했습니다.
이 쿼리를 사용하면 솔루션을 향해 열을 얻을 수 있습니다.
SELECT *
FROM information_schema.columns
WHERE table_schema = 'YOURSCHEMA' AND table_name = 'YOURTABLE'
ORDER BY ordinal_position;
그런 다음 가장 일반적인 색인에 대한이 쿼리 :
SELECT c.oid, c.relname, a.attname, a.attnum, i.indisprimary, i.indisunique
FROM pg_index AS i, pg_class AS c, pg_attribute AS a
WHERE i.indexrelid = c.oid AND i.indexrelid = a.attrelid AND i.indrelid = 'YOURSCHEMA.YOURTABLE'::regclass
ORDER BY" => "c.oid, a.attnum
그런 다음 쿼리 문자열을 올바른 형식으로 작성해야합니다.
https://serverfault.com/a/875414/333439 에서 대답했듯이 \d <table>
메타 명령을 사용 psql
하면 데이터베이스에 테이블 구조를 표시 할 수 있습니다. meta 명령에 사용 된 쿼리를 보려면 명령을 사용할 수 있습니다 psql -E
. 맨 페이지에 설명 된대로 -E
스위치는 \d
메타 명령 쿼리를 에코 합니다. 따라서 메타 명령을 psql -E
사용하여 테이블 구조를 볼 수 있으며 스위치 \d <table>
에 따라 -E
테이블 구조를 설명하기 위해 생성 된 쿼리를 볼 수 있습니다.
Postgres 확장 ddlx ( https://github.com/lacanoid/pgddl )는 정확히 이것과 그 이상을 수행합니다.