2012-03-25 3 views
15

MSSQL에서 PostgreSQL으로 천천히 이동하고 있습니다.PostgreSQL 저장 프로 시저를 편집하는 방법은 무엇입니까?

MSSQL에서 이미 저장된 프로 시저 또는 함수 편집을 호출 할 수 있으며 관리 셸 (SQL Server Management Studio)에서 프로 시저의 텍스트를 보여 주므로 텍스트 파일의 어딘가에 소스 코드를 저장할 필요가 없었습니다.

PostgreSQL과 같은 방식으로 편리하게 수행 할 수 있습니까? 나는 pgAdmin III를 사용하고 있습니다.

+3

을 실행하는 것을 잊었다하지 않습니다에 "매우 어쨌든 (이상적으로 버전 관리 시스템) 권장 –

+0

@a_horse_with_no_name을 :. 나는 다른 선호 접근 방식을 사용합니다. 나는 실험적으로 모든 생산적인 DB 클러스터 (드물게 복사)를위한 테스트 DB 클러스터를 가지고 있습니다. 좋은 것으로 간주 될 때, 나는 생산적인 DB 클러스터에서 구현합니다. 특히 일반적인 백업 외에도, 스키마 변경 후 기존 저장소는 데이터가 끊임없이 변경되고 많은 변경 사항을 되돌릴 수 없으므로 데이터베이스 스키마에 제한적으로 사용됩니다. –

+1

@ErwinBrandstetter :이 접근법의 문제점은 사용자가 overv 변경 사항을 보려면 버전 x에서 버전 x + 1로 데이터베이스를 가져와야합니다. 각 변경 사항을 추적 할 수있는 중앙 집중식 장소가 필요합니다 (예 : 문제 티켓에 매핑하는 것이 가장 이상적입니다). 생산 환경 (개발, 테스트, 스테이징, 유효성 검사, 회귀, 사전 제작, 생산)이 둘 이상이고 프로덕션에서 여러 버전 (여러 국가가 있다고 생각할 수 있음)이 여러 개있는 경우 모두를 추적 할 수있는 방법이 없습니다. VCS없이 변경됩니다. –

답변

18

Postgres의 공식 배포판에 포함 된 클라이언트가 2 개 있습니다. CLI는 psql이고 GUI는 pgAdmin입니다. 둘 다 원하는 것을 지원합니다 : psql의 경우 \ef이고 pgAdmin의 경우 - "속성", "코드"탭을 마우스 오른쪽 버튼으로 클릭하십시오. 이 옵션을 활성화하면 당신은 쉽게 당신의 인생을 만들 수 있습니다pgAdmin에서

+1

'\ ef'가 작동하지만 함수를 저장하지 않습니까? – redolent

+2

@idolent 열린 파일의 끝에';'를 수동으로 추가하거나, 편집기를 닫은 경우에는 하나의';'를 추가하고 Enter 키를 눌러야합니다. – 10gistic

1

phpPgAdmin을 사용하면 저장 프로 시저를 편집하고 인터페이스 내에서 편집 할 수 있습니다. 버전 관리를 위해 외부에 저장하는 것에 대한 질문 아래에 남겨진 주석도 강력히 권장됩니다.

3

:

파일 -> 옵션 ... -> 쿼리 도구 -> [X] 기본 폼에서 SQL 대화에 복사 SQL

그러면 SQL 창에 표시된 항목이 새로 열린 쿼리 도구 창에 복사됩니다. 따라서 객체 브라우저에서 함수를 선택하고 툴바에서 돋보기 아이콘을 클릭하십시오.

1.14.2 현재 버전의 공개 버그를 알고 있어야합니다. 기본적으로 public에는 기능에 대한 EXECUTE 권한이 있습니다. REVOKE이 특권은 SECURITY DEFINER 기능에만 유용합니다. 그러나이 REVOKE은 pgAdmin의 역 설계 DDL 문에 없습니다 (NULL이 빈 ACL과 혼동 됨). 이러한 기능을 삭제하고 다시 작성하는 경우 조심하십시오!

2

코드를 편집하고 테스트하는 편리한 방법이기도합니다.

1) pgAdmin에서 필요한 SQL 함수의 코드를 추출하십시오.

2) 함수가있는 코드를 file.sql에 넣습니다.

3) file.sql와 같은 디렉토리에있는 쉘/박쥐 파일을 만듭니다

psql -U postgres dbname < file.sql 

4) 고속 패널로 쉘/박쥐 파일에 대한 바로 가기를 놓습니다.

5) 좋아하는 텍스트 편집기로 파일을 편집하고 바로 가기를 눌러 기능을 업데이트하십시오.

+0

일반적으로 나는 당신의 기여가 도움이된다고 생각하지만,이 특별한 경우에 당신의 제안은 폴이하지 않기를 바라는 것과 정확히 같습니다 : "그래서 텍스트 파일에 어딘가에 소스 코드를 저장할 필요가 없었습니다." 이 접근법은 너무 복잡하여 "편리함"이라고 불리지 않습니다. – ChristophK

0

오른쪽 (왼쪽) 객체 트리에서 기능을 클릭 -> 스크립트 -> 스크립트

- 또는

새로운 SQL 쿼리를 실행 작성 -> 만들거나 교체 "의 사본 코드 기능 ...이

그런 다음 스크립트를 편집하고 외부 파일에 저장 프로 시저를 저장 그것을