文字列 TABLE1 (大文字と小文字を区別) を含むものを除いて、SQL スクリプトのすべての行にコメントを付けたいと思います。理想的には、コメント (「--」で始まる) と空白行は無視する必要がありますが、そうでない場合はそれほど重要ではありません。
例:初期ファイル
CREATE TABLE TEST (TEST_ID VARCHAR(255) NOT NULL, TEST_NAME VARCHAR(255));
CREATE TABLE LICENSE (ID BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY, PRIMARY KEY (ID));
delete from TEST2 where
ID = 'whatever'
;
delete from TEST3 where
ENV = 'whatelse'
;
UPDATE TEST1 SET VERSION = '1.0';
最終ファイル
-- CREATE TABLE TEST (TEST_ID VARCHAR(255) NOT NULL, TEST_NAME VARCHAR(255));
-- CREATE TABLE LICENSE (ID BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY, PRIMARY KEY (ID));
-- delete from TEST2 where
-- ID = 'whatever'
-- ;
-- delete from TEST3 where
-- ENV = 'whatelse'
-- ;
UPDATE TEST1 SET VERSION = '1.0';
私が見つけた唯一の解決策は次のとおりです。 1. スクリプトのすべての行をコメントアウトし、文字列 TEST1 に一致する行のコメントを解除します。
<replaceregexp file="${sql.file}"
match="(.*)"
replace="-- \1"
byline="true"
/>
<replaceregexp file="${sql.file}"
match="^-- (.*TEST1)"
replace="\1"
byline="true"
/>
保持したい行のみを含む新しいファイルを作成します。
<copy file="${sql.file}" tofile="${sql.file.bak}"> <filterchain> <linecontains> <contains value="TEST1"/> </linecontains> </filterchain> </copy>
私は両方の解決策に満足していません: 解決策 #1. 2 つのタスクを使用し、同じファイルを 2 回更新します。コメントとして保持したい他の行を削除します
誰かが正しい答えを持っているなら、私はそれを取ります。
ありがとう、サブリナ