Translations of this page?:

カスタム SQL ファイル

“sqlFile” タグを利用することで、どんな SQL 文でも指定でき、それを外部のファイルに保存できます。これはストアドプロシージャのような LiquiBase の自動リファクタリングでは対応していない複雑な変更を行う場合に有用です。

sqlFile リファクタリングは、下記の順序でファイルを検索します:

  1. クラスパスを元に検索されます。これは手動で設定することもできますし、LiquiBase の起動スクリプトは実行時にカレントディレクトリをクラスパスに追加します。
  2. file 属性をファイル名として利用することで検索も可能です。絶対パスでも現在のディレクトリからの相対パスでも指定可能です。

“sqlFile” タグは、同一のファイルに複数の SQL 文を記述にも対応しています。SQL 文は文の最後に ; を記述するか、go を SQL 文の間におくことで分割可能です。複数の SQL 文は ; または go によって SQL 文が終了したことを示します。改行だけでは不十分です。ファイルにひとつの SQL 文しかない場合は、; も go も不要です。

SQL ファイルは下記の形式でコメントを含むことができます:

  1. /* で始まり、*/ で終わる複数行のコメント
  2. <space>–<space> の形式で文の最後に記述される単一行のコメント

<sqlFile path="sample.sql"/>

sample.sql には下記を含むことができます:

INSERT INTO person (id, name) VALUES (1, 'Bob')

複数行の sample.sql はこのようなものがあります:

INSERT INTO person (id,name) VALUES (1, 'George');
INSERT INTO person (id,name) VALUES (2, 'Jim')

MSSQL では、go を利用することで複数行の SQL 文を記述できます:

INSERT INTO person (id,name) 
VALUES (1, 'George')
go
INSERT INTO person (id,name) 
VALUES (2, 'Jim')

利用可能な属性

path 読み込む SQL ファイル名
stripComments true に設定すると、SQL 文の実行前にすべてのコメントを削除します。デフォルト値は false です。
splitStatements false に設定すると、; や go を記述しても SQL 文を分割しません。デフォルト値は true です。
encoding Specify the file encoding to use

データベースの互換性

MySQL 問題なし
PostgreSQL 問題なし
Oracle 問題なし
MS-SQL 問題なし
Sybase Sybase では、複数行の SQL 文を記述する場合に、stripComments を true に設定する必要があるでしょう。
DB2 問題なし
HSQL 問題なし
Derby 問題なし
H2 問題なし
Caché 問題なし
Firebird 問題なし
MaxDB 問題なし

自動ロールバック対応: いいえ

 
ja/manual/custom_sql_file.txt · 最終更新: 2008/03/18 07:07 (外部編集)     文書の先頭へ