JDBC を介してデータベースに対して一連の SQL 文を実行します。文は、src 属性を使用してテキストファイルから読み込むか、囲んでいる SQL タグの間から読み込むことができます。
複数の文をセミコロン(または定義された delimiter)で区切って指定できます。文内の個々の行は、行の先頭に --
、//
、または REM
を使用してコメントアウトできます。
autocommit 属性は、文の実行中に自動コミットをオンにするかオフにするかを指定します。自動コミットが on
の場合、各文は実行およびコミットされます。 off
の場合、文はすべて 1 つのトランザクションとして実行されます。
onerror 属性は、文のいずれかの実行中にエラーが発生した場合の処理方法を指定します。可能な値は、continue
実行を継続し、エラーのみを表示します。 stop
実行を停止し、エラーをログに記録しますが、タスクは失敗しません。 abort
実行とトランザクションを中止し、タスクを失敗させます。
プロキシ。一部の JDBC ドライバー(Oracle Thin ドライバーを含む)は、JVM のプロキシ設定を使用して JDBC 操作をデータベースにルーティングします。 Apache Ant 1.7 以降、Java 5 以降で実行されている Ant は、オペレーティングシステムのプロキシ設定を使用する ようにデフォルト設定されています。したがって、OS のプロキシ設定が有効であるか、-noproxy オプションを使用して Ant のプロキシサポートを無効にする必要があります。
属性 | 説明 | 必須 |
---|---|---|
driver | jdbc ドライバーのクラス名 | はい |
url | データベース接続 URL | はい |
userid | データベースユーザー名 | はい |
password | データベースパスワード | はい |
src | SQL 文を含むファイル | タグ内に文が囲まれていない場合は必須 |
encoding | SQL 文を含むファイルのエンコーディング | いいえ; デフォルトは JVM のデフォルト文字エンコーディング |
outputencoding | 結果を保持するファイルのエンコーディング。 Ant 1.9.4 以降 | いいえ; デフォルトは JVM のデフォルト文字エンコーディング |
delimiter | SQL 文を区切る文字列 | いいえ; デフォルトは ;; |
autocommit | データベース接続の自動コミットフラグ | いいえ; デフォルトは false |
文の結果セットを出力する | いいえ; デフォルトは false |
|
showheaders | 文の結果セットのヘッダーを出力する | いいえ; デフォルトは true |
showtrailers | 影響を受けた行数のトレーラーを出力する | いいえ; デフォルトは true |
output | 結果セットの出力ファイル。 Ant 1.8 以降、出力をサポートする任意のリソースを指定できます(注記 を参照)。 | いいえ; デフォルトでは System.out に出力 |
append | 出力を既存のファイルに追加するか、上書きするか。 | いいえ; デフォルトは false、output がファイルシステムの宛先を指定していない場合は無視されます |
classpath | ドライバーのロードに使用されるクラスパス | いいえ; デフォルトはシステムクラスパス |
classpathref | 使用するクラスパス。他の場所で定義されたパスへの 参照 として指定されます。 | いいえ; デフォルトはシステムクラスパス |
onerror | 文が失敗したときに実行するアクション: continue、 stop、 abort |
いいえ; デフォルトは abort |
rdbms | この RDBMS の場合にのみタスクを実行する | いいえ; デフォルトでは無制限 |
version | RDBMS のバージョンが一致する場合にのみタスクを実行する | いいえ; デフォルトでは無制限 |
caching | タスクはローダーとドライバーをキャッシュする必要がありますか? | いいえ; デフォルトは true |
delimitertype | 区切り文字が単独の行でのみ認識されるかどうかを制御します。normal- 行のどこでも、または row- 単独の行にある必要があることを意味します |
いいえ; デフォルトは normal |
keepformat | SQL の形式を保持するかどうかを制御します。 パッケージとプロシージャをロードする場合に便利です。 | いいえ; デフォルトは false |
escapeprocessing | Java ステートメントオブジェクトがエスケープ置換を実行するかどうかを制御します。 詳細については、Statement の API ドキュメント を参照してください。 Ant 1.6 以降。 | いいえ; デフォルトは true |
expandproperties | ネストされた SQL、タスク内のインライン、またはネストされたトランザクションでプロパティ展開を有効にするには、true に設定します。 Ant 1.7 以降。 | いいえ; デフォルトは true |
rawblobs | trueの場合、BLOB の結果を出力する際に、16 進エンコードではなく生のストリームを書き込みます。 Ant 1.7.1 以降。 |
いいえ; デフォルトは false |
failOnConnectionError | falseの場合、タスクがデータベースへの接続に失敗した場合、警告メッセージのみを出力し、ステートメントを実行しません。 Ant 1.8.0 以降。 |
いいえ; デフォルトは true |
strictDelimiterMatching | falseの場合、区切り文字は大文字と小文字を区別せずに検索され(つまり、delimiter= goは GOに一致します)、周囲の空白は無視されます(delimiter= goは GOに一致します)。 Ant 1.8.0 以降。 |
いいえ; デフォルトは true |
showWarnings | trueの場合、SQLWarnings は warningレベルでログに記録されます。 Ant 1.8.0 以降。 注記: 属性が falseに設定されている場合でも、接続に適用される警告は verboseレベルでログに記録されます。 |
いいえ; デフォルトは false |
treatWarningsAsErrors | trueの場合、SQLWarnings はエラーとして扱われ、onError 属性で選択されたロジックが適用されます。 Ant 1.8.0 以降。 |
いいえ; デフォルトは false |
csvColumnSeparator | 結果を出力するときに使用される列区切り文字。 Ant 1.8.0 以降。 | いいえ; デフォルトは , |
csvQuoteCharacter | 列の値を引用符で囲むために使用される文字。 設定されている場合、列区切り文字または引用符自体を含む列は、引用符で囲まれます。引用符自体が列の値の中に現れる場合は、二重になります。 注記: BLOB 値は引用符で囲まれません。 Ant 1.8.0 以降。 |
いいえ; デフォルトは設定されていません(つまり、引用符は使用されません) |
forceCsvQuoteChar | trueの場合、常に引用符が使用されます |
いいえ; デフォルトは設定されていません(つまり、引用符は必要な場合にのみ使用されます) |
errorproperty | エラーが発生した場合に設定するプロパティの名前。 Ant 1.8.0 以降 | いいえ |
warningproperty | 警告が発生した場合に設定するプロパティの名前。 Ant 1.8.0 以降 | いいえ |
rowcountproperty | 実際に行カウントを返した最初のステートメント/トランザクションによって更新された行数に設定するプロパティの名前。 Ant 1.8.0 以降 | いいえ |
ネストされた <transaction>
要素を使用して、同じ接続で実行されるが、異なるトランザクションで実行される複数のコマンドブロックを指定します。これは、同じスキーマで実行するファイルが複数ある場合に特に便利です。
属性 | 説明 | 必須 |
---|---|---|
src | SQL 文を含むファイル | タグ内に文が囲まれていない場合は必須 |
<transaction>
要素は、SQL 文を含むリソースを指定するために、ネストされた要素として任意の リソース または単一要素リソースコレクションをサポートします。
ネストされたリソースコレクション要素を介して複数のソースを指定できます。コレクションの各リソースは、独自のトランザクションで実行されます。Ant 1.7 より前は、ファイルセットのみがサポートされていました。トランザクションの順序を予測可能にするには、ソートリソースコレクションを使用します。
Sql
の classpath 属性は、パスのような構造 であり、ネストされた classpath 要素を介して設定することもできます。JDBC クラスをロードするために使用されます。
Ant 1.8.0 以降
ネストされた <connectionProperty>
要素を使用して、データベースに接続するときに設定する必要がある追加の JDBC プロパティを指定します。
属性 | 説明 | 必須 |
---|---|---|
name | プロパティの名前 | はい |
value | プロパティの値 | はい |
org.database.jdbcDriver
を使用して sa
ユーザーとして url で指定されたデータベースに接続し、data.sql ファイルに含まれる SQL 文を実行します
<sql driver="org.database.jdbcDriver" url="jdbc:database-url" userid="sa" password="pass" src="data.sql"/>
org.database.jdbcDriver
を使用して sa
ユーザーとして url で指定されたデータベースに接続し、data.sql ファイルに含まれる SQL 文を実行します。また、プロパティ internal_logon
を値 SYSDBA
に設定します。
<sql driver="org.database.jdbcDriver" url="jdbc:database-url" userid="sa" password="pass" src="data.sql"> <connectionProperty name="internal_logon" value="SYSDBA"> </sql>
org.database.jdbcDriver
を使用して sa
ユーザーとして url で指定されたデータベースに接続し、some_table にデータを挿入し、some_other_table を切り捨てる 2 つの SQL 文を実行します。ネストされたテキスト内の Ant プロパティは展開されません。
<sql driver="org.database.jdbcDriver" url="jdbc:database-url" userid="sa" password="pass"> insert into table some_table values(1,2,3,4); truncate table some_other_table; </sql>
<
、>
、&
、またはその他の特殊文字をエスケープする必要がないように、ステートメントを <![CDATA[
... ]]>
セクションで囲むことをお勧めします。例えば
<sql driver="org.database.jdbcDriver" url="jdbc:database-url" userid="sa" password="pass"><![CDATA[ update some_table set column1 = column1 + 1 where column2 < 42; ]]></sql>
次のコマンドは、ネストされたテキストのプロパティ展開をオンにし(純粋に下位互換性のためにオフになっています)、Ant プロパティを使用して HSQLDB データベースに新しいユーザーを作成します。
<sql driver="org.hsqldb.jdbcDriver"; url="jdbc:hsqldb:file:${database.dir}" userid="sa" password="" expandProperties="true"> <transaction> CREATE USER ${newuser} PASSWORD ${newpassword} </transaction> </sql>
org.database.jdbcDriver
を使用して sa
ユーザーとして url で指定されたデータベースに接続し、data1.sql、data2.sql、および data3.sql ファイルに含まれる SQL 文を実行し、some_other_table に対して truncate 操作を実行します。
<sql driver="org.database.jdbcDriver" url="jdbc:database-url" userid="sa" password="pass"> <transaction src="data1.sql"/> <transaction src="data2.sql"/> <transaction src="data3.sql"/> <transaction> truncate table some_other_table; </transaction> </sql>
次の例は(123)と同じことを行いますが(パターン data*.sql に一致するファイルがもっとある場合は追加の SQL ファイルを実行する可能性があります)、data1.sql が data2.sql より前に実行されることは保証されません。
<sql driver="org.database.jdbcDriver" url="jdbc:database-url" userid="sa" password="pass"> <path> <fileset dir="."> <include name="data*.sql"/> </fileset> </path> <transaction> truncate table some_other_table; </transaction> </sql>
org.database.jdbcDriver
を使用して sa
ユーザーとして url で指定されたデータベースに接続し、data.sql ファイルに含まれる SQL 文を実行し、出力を outputfile.txt にパイプし、ドライバークラスのシステムクラスパスと同様に /some/jdbc.jar を検索します。
<sql driver="org.database.jdbcDriver" url="jdbc:database-url" userid="sa" password="pass" src="data.sql" print="yes" output="outputfile.txt"> <classpath> <pathelement location="/some/jdbc.jar"/> </classpath> </sql>
RDBMS が oracle
で、バージョンが 8.1.
で始まる場合にのみ、以下が実行されます。
<sql driver="org.database.jdbcDriver" url="jdbc:database-url" userid="sa" password="pass" src="data.sql" rdbms="oracle" version="8.1."> insert into table some_table values(1,2,3,4); truncate table some_other_table; </sql>