저는 postgreSQL을 처음 사용하며 간단한 질문이 있습니다.
나중에 다음과 같이 호출 할 수 있도록 DB를 만드는 간단한 스크립트를 만들려고합니다.
psql -f createDB.sql
스크립트가 다음과 같이 다른 스크립트 (테이블 생성, 제약 조건, 함수 추가 등을위한 별도의 스크립트)를 호출하기를 원합니다.
\i script1.sql
\i script2.sql
createDB.sql이 동일한 디렉토리 에 있으면 제대로 작동합니다 .
그러나 script2를 createDB가있는 디렉토리 아래의 디렉토리로 이동하고 createDB를 수정하면 다음과 같이 보입니다.
\i script1.sql
\i somedir\script2.sql
오류가 발생합니다.
psql : createDB.sql : 2 : somedir : 권한이 거부되었습니다.
Windows 용 Postgres Plus 8.3, 기본 postgres 사용자를 사용하고 있습니다.
편집하다:
바보, 유닉스 슬래시가 문제를 해결했습니다.
답변
Postgres는 Linux / Unix에서 시작되었습니다. 나는 그것을 고쳐서 슬래시를 뒤집는 것으로 의심됩니다.
\i somedir/script2.sql
무언가를 완전히 검증해야하는 경우
\i c:/somedir/script2.sql
그래도 문제가 해결되지 않으면 백 슬래시를 피해야 할 것 같습니다.
\i somedir\\script2.sql
답변
Unix 스타일 슬래시 (\ 대신 /)를 사용해 보셨습니까?
\는 종종 이스케이프 또는 명령 문자이며 혼동의 원인이 될 수 있습니다. 나는 이것에 문제가 없었지만 Windows도 없어서 테스트 할 수 없습니다.
또한 권한은 psql을 실행하는 사용자 또는 포스트 마스터 서비스를 실행하는 사용자를 기반으로 할 수 있습니다. 둘 다 해당 디렉터리에서 해당 파일을 읽었는지 확인합니다.
답변
이걸 해봐, 난 그렇게하기 위해 노력해
\i 'somedir\\script2.sql'
답변
나는 이것을 시도하고 특정 스키마에서 SQL 파일을 실행하기 위해 Windows 시스템에서 작업했습니다.
psql -h localhost -p 5432 -U 사용자 이름 -d databasename -v schema = schemaname <e : \ Table.sql
답변
