2012-04-03 4 views
2

내 모든 테이블, 뷰, 트리거가 다른 파일 (Table1.sql, Table2.sql, View1.sql, ...)에 있고 모든 모델 스크립트를 결합해야합니다. allinone.sql 스크립트를 작성합니다 (예 : 배치 용 인도 물). 내가 참조 무결성을 가지고, 내가 파일을 병합 할 순서를 stablish 필요SQL 스크립트 파일 병합 (순서대로)

type *.sql > allinone.sql (or cat in bash) 

을하지만 : 지금은이 같은 모든 사용 "유형"명령을 결합 할 수 있습니다. (그렇지 않으면 참조 무결성을 통해 allinone.sql 스크립트가 실패합니다.)

이를 수행하는 소프트웨어 또는 방법을 알고 있습니까? 당신의 SQL 구현이있는 경우

답변

2

비활성화 fkey 체크하여 fkey 확인 가능하도록 유형, 마지막에

SET FOREIGN_KEY_CHECKS = 1; 

을 스크립트

SET FOREIGN_KEY_CHECKS = 0; 

을 실행하기 전에

+0

"좋은"해결책이라고 생각합니다. 그것은 작동하지만 우리는 제약 조건을 점검하지 않습니다. 스크립트 상단에 외래 키 비활성화를 사용하여 배달 물을 클라이언트에 보냈다 고 상상합니까? 나 자신 있음을 확신한다 (나의 스크립트는 괜찮다). 그러나 스크립트를 실행할 때 제한을 점검하는 것이 바람직 할 것이다. 응답 해 주셔서 감사합니다. – unairoldan

0

파일을 메커니즘을 포함 , 당신은 그것을 사용할 수 있습니다. 포스트 그레스의 psql의 터미널 모니터의 경우,이는 \i filename 명령을 사용하여 수행 할 수 있습니다 :

\i create_database.sql 
\i create_tables.sql 
\i populate_tables.sql 
\i create_indexes.sql 
\i create_functions.sql 
\i create_triggers.sql 
\i revoke_and_grant.sql 
\i do_some_checks.sql 

이 모두 "all_files.sql"스크립트에 넣어 다음 psql a_database <all_files.sql에 의해 제출되어야한다. 물론 필요한 실행 순서를 얻기 위해 수동으로 스크립트를 주문해야합니다.