psql로 여러 파일을 한 번에 소싱


27

psql데이터베이스 스키마를 설정하기 위해 단일 트랜잭션 으로 여러 SQL 스크립트를 순차적으로 실행하고 싶습니다 . 가장 좋은 방법은 무엇입니까? 과거 psql에는 다른 파일이 포함 된 마스터 스크립트가 있었지만이 스크립트의 구문을 기억하지 못합니다.

답변:


32

스크립트는 다음과 같습니다.

BEGIN;
\i file1.sql
\i file2.sql
COMMIT;

또는 다음과 같이 할 수 있습니다.

cat file1.sql file2.sql | psql -1 -f -

1
쉘의 파이프를 이해 하면 마지막 명령을 얻는 데 도움이되었습니다.
ma11hew28

BEGIN을 사용한 예; 범하다; 작동하지 않는 경우 각 \i줄 의 끝에 세미 열이 필요 합니다.
nichochar

0

"읽기"명령을 사용하여 rep_sql 매개 변수로 과거 파일 sql에 대한 경로를 사용하여 unix / linux에서 find를 사용했습니다.

find -P ${rep_sql} -type f -name *.sql -execdir psql -d "mabase" -f {} +

그것은 다음과 같습니다 : find not follow 파일 이름과 확장자가«.sql»이며 mabase로 작업하는 psql 파일의 디렉토리에서 실행하고 찾은 파일을 실행하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.