Sql

Description

説明

Executes a series of SQL statements via JDBC to a database. Statements can either be read in from a text file using the src attribute or from between the enclosing SQL tags.

一連のSQL文をJDBC を通じてデータベースで実行します。 (SQL)文はsrc属性を用いてテキストファイルから読むことも、 SQLタグで括った部分から読むこともできます。

Multiple statements can be provided, separated by semicolons (or the defined delimiter). Individual lines within the statements can be commented using either --, // or REM at the start of the line.

複文はセミコロン (あるいはdelimiterで定義されたもの)により区切ることにより与えられます。 文中の個々の行は行の頭の --、//、または REM を使うことによりコメントアウトできます。

The autocommit attribute specifies whether auto-commit should be turned on or off whilst executing the statements. If auto-commit is turned on each statement will be executed and committed. If it is turned off the statements will all be executed as one transaction.

autocommit属性は、 文の実行中に auto-commit オンにするかオフにするかを指定します。 auto-commit がオンの場合、 個々の文毎に実行されコミットされます。 If auto-commit is turned オフの場合、全ての文は一回のトランザクションで実行されます。

The onerror attribute specifies how to proceed when an error occurs during the execution of one of the statements. The possible values are: continue execution, only show the error; stop execution and commit transaction; and abort execution and transaction and fail task.

onerror 属性は、 複数文のうちの一つの実行の際にエラーが発生した時、 その後どうするかを指定します。 可能な値は次の通りです: continue エラーを表示のみ行い実行を続けます; stop トランザクションの実行とコミットを停止します; abort 実行とトランザクションを異常終了し、タスクを失敗します

Parameters

パラメータ

Attribute Description Required
driver Class name of the jdbc driver Yes
url Database connection url Yes
userid Database user name Yes
password Database password Yes
src File containing SQL statements Yes, unless statements enclosed within tags
encoding The encoding of the files containing SQL statements No - defaults to default JVM encoding
delimiter String that separates SQL statements No, default ";"
autocommit Auto commit flag for database connection (default false) No, default "false"
print Print result sets from the statements (default false) No, default "false"
showheaders Print headers for result sets from the statements (default true) No, default "true"
output Output file for result sets (defaults to System.out) No (print to System.out by default)
append whether output should be appended to or overwrite an existing file. Defaults to false. No
classpath Classpath used to load driver No (use system classpath)
classpathref The classpath to use, given as a reference to a path defined elsewhere. No (use system classpath)
onerror Action to perform when statement fails: continue, stop, abort No, default "abort"
rdbms Execute task only if this rdbms No (no restriction)
version Execute task only if rdbms version match No (no restriction)
caching Should the task cache loaders and the driver? No (default=true)
属性 説明 必須
driver JDBCドライバのクラス名 Yes
url データベースの接続URL Yes
userid データベースのユーザ名 Yes
password データベースのパスワード Yes
src SQL文の入っているファイル 文がタグで括られない限りYes
encoding SQL文が入ってるファイルのエンコーディング No - デフォルトは JVM のデフォルトエンコーディング
delimiter 複数のSQL文を区切る文字列 No、デフォルトは ";"
autocommit データベース接続のための自動コミットフラグ(デフォルト false) No、デフォルトは"false"
print SQL文の結果セットを表示する(デフォルトfalse) No、デフォルトは"false"
showheaders SQL文の結果セットのヘッダを表示する(デフォルト true) No、デフォルトは"true"
output 結果セットの出力ファイル(デフォルトはSystem.outに出力) No (デフォルトでSystem.outに出力)
append 既存のファイルに出力を追記するか、上書きするか No
classpath ドライバをロードするためのクラスパス No (システムのクラスパスを使う)
classpathref どこかで定義されたパスへの参照として与えられる使用するクラスパス No (システムのクラスパスを使う)
onerror SQL文が失敗した場合に実行するアクション: continue,stop,abort No、デフォルトは"abort"
rdbms 該当するRDBMSに対してのみタスクを実行する No (制限なし)
version Execute task only if rdbms version match No (no restriction)
caching タスクがローダーとドライバーをキャッシュするか No (デフォルト=true)

Parameters specified as nested elements

ネストされるパラメータにより指定されるパラメータ

transaction

Use nested <transaction> elements to specify multiple blocks of commands to the executed executed in the same connection but different transactions. This is particularly useful when there are multiple files to execute on the same schema.

ネストされた<transaction> 要素は、 コマンドのブロック複数のブロックを、 同一コネクション上の別トランザクションとして実行するために使います。 これは同じスキーマに対し、実行するファイルが複数ある場合に特に有用です。

Attribute Description Required
src File containing SQL statements Yes, unless statements enclosed within tags
属性 説明 必須
src SQL文が入っているファイル SQL文がタグに含まれない限り Yes

fileset

You can specify multiple source files via nested fileset elements. Each file of the fileset will be run in a transaction of its own, the order by which the files of a single fileset will be executed is not defined.

複数のソースファイルを、 ネストされたファイルセットにより指定可能です。 ファイルセットの個々のファイルは、それぞれ別のトランザクションで実行されます。 一つのファイルセットのファイルの実行順序は定義されていません。

classpath

Sql's classpath attribute is a PATH like structure and can also be set via a nested classpath element. It is used to load the JDBC classes.

sql(タスク)の classpath 属性は パスのような構造であり、 ネストされたclasspath要素によっても設定可能です。 これはJDBC クラスをロードするのに使われます。

The

Examples

<sql
    driver="org.database.jdbcDriver"
    url="jdbc:database-url"
    userid="sa"
    password="pass"
    src="data.sql"
/>

Connects to the database given in as the sa user using the org.database.jdbcDriver and executes the SQL statements contained within the file data.sql

urlで指定されたデータベースに、 ユーザ sa として org.database.jdbcDriver を使って接続し、 ファイル data.sql にある SQL 文を実行します。

<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>

Connects to the database given in url as the sa user using the org.database.jdbcDriver and executes the two SQL statements inserting data into some_table and truncating some_other_table

urlで指定されたデータベースに、 ユーザ sa として org.database.jdbcDriver を使って接続し、 some_table へのデータの挿入、および、 some_other_table の全データ削除を行います。

Note that you may want to enclose your statements in <![CDATA[ ... ]]> sections so you don't need to escape <, > & or other special characters. For example:

SQL 文を セクションで囲めば、 <>& やその他の特殊文字をエスケープする必要がなくなります。 例えば次の通りです。

<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>

The following connects to the database given in url as the sa user using the org.database.jdbcDriver and executes the SQL statements contained within the files data1.sql, data2.sql and data3.sql and then executes the truncate operation on some_other_table.

次の例では、 urlで指定されたデータベースに、 ユーザ sa として org.database.jdbcDriver を使って接続し、 data1.sql、data2.sql および data3.sqlにあるSQL文を実行し、 some_other_tableを空にする操作を行います。

<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>

The following example does the same as (and may execute additional SQL files if there are more files matching the pattern data*.sql) but doesn't guarantee that data1.sql will be run before data2.sql.

次の例は上と同じ(さらにはパターンdata*.sqlにマッチするほかのファイルがあれば、それを実行します)ですが、 data1.sql が data2.sqlよりも前に実行されることは保障されません。

<sql
    driver="org.database.jdbcDriver"
    url="jdbc:database-url"
    userid="sa"
    password="pass" >
  <fileset dir=".">
    <include name="data*.sql" />
  </fileset>
  <transaction>
    truncate table some_other_table;
  </transaction>
</sql>

The following connects to the database given in url as the sa user using the org.database.jdbcDriver and executes the SQL statements contained within the file data.sql, with output piped to outputfile.txt, searching /some/jdbc.jar as well as the system classpath for the driver class.

次の例では、 urlで指定されたデータベースに、 ユーザ sa として org.database.jdbcDriver を使って接続し、 出力を outputfile.txt にパイプして、 システムクラスパスと同様に/some/jdbc.jar に対し、 ドライバーのクラスを探し、 data.sql にあるSQL文を実行します。

<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>

The following will only execute if the RDBMS is "oracle" and the version starts with "8.1."

次の例は 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>

Copyright © 2000-2002 Apache Software Foundation. All rights Reserved.

[訳注:これは漆島賢二が翻訳しました。日本語訳に対するコメントがあれば report@jajakarta.orgに送ってください]