2012-04-03 7 views
2

私はすべてのテーブル、ビュー、トリガを別々のファイル(Table1.sql、Table2.sql、View1.sql、...)に持っています。私はすべてのモデルスクリプトallinone.sqlスクリプトを作成します(たとえば、配布用の配布物に)。SQLスクリプトファイルをマージする

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

をしかし、私は参照整合性を持っているように、私はファイルをマージするために築く必要があります。今、私はこのようにすべて使用して、「タイプ」コマンドを組み合わせることができます。 (そうでなければ、参照整合性によってallinone.sqlスクリプトが失敗します)

これを実行するソフトウェアまたは方法をご存知ですか?最後に、スクリプト

SET FOREIGN_KEY_CHECKS = 0; 

を実行する前に

答えて

2

無効FKEYチェック、タイプ

SET FOREIGN_KEY_CHECKS = 1; 

あなたのSQLの実装ががファイル機構を含んでいる場合は、あなたのFKEYチェック

+0

私はそれが「良い」解決策だと思います。それは動作しますが、我々は制約をチェックしません。あなたは、スクリプトのトップに外部キーの非アクティブ化を使ってクライアントに配送可能物を送ると想像できますか?私は自分自身に自信があります(私のスクリプトはOKです)が、スクリプトを実行するときは制限を確認することが望ましいでしょう。応答していただきありがとうございます。 – unairoldan

0

を有効にするには、あなたはそれを使うことができます。 Postgresのの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により提出してください。 もちろん、必要な実行順序を得るためにスクリプトを手動で注文する必要があります。

関連する問題