2017-02-06 5 views
0

디스크의 폴더에 저장된 파일 이름을 읽고 확장자를 통해 필터링하는 방법이 있습니까? 이것은 SQL Server에서 할 수 있지만 이제는 postgresql을 사용하여 수행해야합니다. 나는 당신의 제안을 기다리고 있습니다. 고맙습니다.PostgreSQL에서 디스크에 .sql 파일을 읽으십시오.

이 SQL 서버와 함께 사용 :

EXECUTE master.dbo.xp_cmdshell 'dir /b "C:\Folder_Scripts\*.sql"' 
+0

'psql '을 사용하는 것이 잘못된 이유는 무엇입니까? –

+0

원하는 것을 분명히하십시오. 파일을 실행할 SQL 스크립트입니까? 파일이 클라이언트 시스템 또는 서버 시스템에 있습니까? 어떤 프로그래밍 환경에서 또는 어떤 클라이언트 프로그램을 사용하여 작업을 수행하고 싶습니까? –

+0

아니, 내가하려고하는 것은 pl/sql이있는 Postgresql에서 스크립트 파일 .sql을 읽을 수 있어야합니다. 이름이 존재한다면 첫 번째 스크립트의 이름과 데이터베이스의 함수를 비교해야합니다. 그것을 이름을 변경하고 그것을 실행하지만, 그것은 데이터베이스에 단순히 그것을 실행해야 존재합니다. 클라이언트 컴퓨터에서 실행해야하는 경우. @Laurenz Albe – Max

답변

0

귀하의 설명과 댓글이 없음도 명확하지 않습니다,하지만 난 당신이 디스크에 SQL 스크립트 파일의 이름을 변경을 열고 내부에 포함 된 SQL 문을 실행하려는 수집 PL/pgSQL 함수.

은 PL/pgSQL의는 잘하지만, 여기 당신이 필요 도구가 무엇인지되지 않습니다 :

당신이 기능이 필요합니다, 그래서 수퍼 유저 권한이 필요 표준 SQL functions for reading files있다
  • SECURITY DEFINER과 함께 실행되는 수퍼 유저가 소유합니다.

  • adminpack contrib 모듈에 SQL functions to write files이 있으며 수퍼 유저 권한이 필요합니다.

  • EXECUTE statement을 사용하여 SQL 명령 (또는 여러 SQL 명령을 세미콜론으로 구분하여)이 포함 된 문자열을 실행할 수 있습니다.

  • 데이터베이스에 정의 된 함수는 SQL 표준보기 information_schema.routines에서 찾을 수 있습니다.

많은 문자열 처리가 필요한 경우 PL/pgSQL이 다소 어색할 수 있습니다. 이 경우 PL/Perl을 사용해보십시오.

+0

버전이 업데이트 될 때 종종 50 개 이상의 저장 프로 시저가 발생하므로 수동으로 처리하는 프로세스가 매우 길어집니다. 아이디어는 존재하는 경우 백업을 생성하고 직접 실행하지 않는 경우 백업을 생성하는 것입니다. 나는 당신의 제안을 이해하지 못합니다. ( – Max

+0

글쎄, 나는 당신의 질문을 이해하지 못합니다. –