4.2. Nablarch SQL Executor¶
Nablarch SQL ExecutorはNablarch特殊構文を含むSQLファイルを 対話的に実行するツールである。
4.2.1. 前提条件¶
前提条件を以下に示す。
- FirefoxまたはChromeがインストール済みであること。
- Nablarchの開発環境が設定済みであること。
- Maven Central RepositoryにJDBCドライバが存在しないRDBMSを使用する場合は、Project Local RepositoryまたはLocal RepositoryにJDBCドライバを登録済みであること。 登録方法は、Mavenリポジトリへのファイル登録 を参照。
4.2.2. 制約¶
本ツールには以下の制約がある。 このため、これらのSQLを実行したい場合には、本ツールではなく使用するデータベース付属のSQL実行環境などを用いること。
- IN句に対して条件を設定することが出来ない
- WITH句で始まるSQLを実行することが出来ない
ちなみに
Nablarchでは2-way SQLとしてSQLを記述できる Doma(外部サイト) 用の アダプタ を提供している。
Domaを使用した場合、本ツールのような複雑なツールのセットアップを行わなくても、本番環境用に定義したSQLを簡単にテスト実行出来る。 (動的な条件を構築するような場合でも、SQLを書き換えることなく実行できる)
このため、Domaの使用を検討することを推奨する。
4.2.4. DB設定変更¶
使用するRDBMSに応じて設定変更を行う。
4.2.4.1. 基本設定の変更¶
4.2.4.1.1. src/main/resources/db.configの修正¶
接続URLやユーザ、パスワードを変更する場合、src/main/resources/db.configを修正する。
以下に設定例を示す。
H2の設定例(デフォルト)
db.url=jdbc:h2:./h2/db/SAMPLE
db.user=SAMPLE
db.password=SAMPLE
Oracleの設定例
# jdbc:oracle:thin:@ホスト名:ポート番号:データベースのSID
db.url=jdbc:oracle:thin:@localhost:1521/xe
db.user=sample
db.password=sample
PostgreSQLの設定例
# jdbc:postgresql://ホスト名:ポート番号/データベース名
db.url=jdbc:postgresql://localhost:5432/postgres
db.user=sample
db.password=sample
DB2の設定例
# jdbc:db2://ホスト名:ポート番号/データベース名
db.url=jdbc:db2://localhost:50000/SAMPLE
db.user=sample
db.password=sample
SQL Serverの設定例
# jdbc:sqlserver://ホスト名:ポート番号;instanceName=インスタンス名
db.url=jdbc:sqlserver://localhost:1433;instanceName=SQLEXPRESS
db.user=SAMPLE
db.password=SAMPLE
4.2.4.2. JDBCドライバの変更¶
JDBCドライバを変更する場合、以下のファイルを修正する。
4.2.4.2.1. pom.xml¶
pom.xml中の「使用するRDBMSにあわせて、下記JDBCドライバの dependency を更新してください。」とのコメントがある箇所を修正する。
以下、データベース毎の設定例を記述する。
H2の設定例(デフォルト)
<dependencies>
<!-- 中略 -->
<!-- 使用するRDBMSにあわせて、下記JDBCドライバの dependency を更新してください。 -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.3.176</version>
<scope>runtime</scope>
</dependency>
</dependencies>
Oracleの設定例
<dependencies>
<!-- 中略 -->
<!-- 使用するRDBMSにあわせて、下記JDBCドライバの dependency を更新してください。 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.2.0</version>
<scope>runtime</scope>
</dependency>
</dependencies>
PostgreSQLの設定例
<dependencies>
<!-- 中略 -->
<!-- 使用するRDBMSにあわせて、下記JDBCドライバの dependency を更新してください。 -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1207</version>
<scope>runtime</scope>
</dependency>
</dependencies>
DB2の設定例
<dependencies>
<!-- 中略 -->
<!-- 使用するRDBMSにあわせて、下記JDBCドライバの dependency を更新してください。 -->
<dependency>
<groupId>com.ibm</groupId>
<artifactId>db2jcc4</artifactId>
<version>10.5.0.7</version>
<scope>runtime</scope>
</dependency>
</dependencies>
4.2.4.2.2. src/main/resources/db.xml¶
JDBCドライバのクラス名とダイアレクトのクラス名を修正する。 dataSourceコンポーネントのdriverClassNameプロパティに、ドライバのクラス名を設定する。
該当箇所を以下に示す。
<!-- データソース設定 -->
<component name="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<!-- JDBCドライバのクラス名設定 -->
<!-- TODO: データベース接続情報を変更する場合、ここを修正します -->
<property name="driverClassName"
value="org.h2.Driver" />
<!-- 中略 -->
</component>
<!-- データベース接続用設定 -->
<component name="connectionFactory"
class="nablarch.core.db.connection.BasicDbConnectionFactoryForDataSource">
<!-- 中略 -->
<property name="dialect">
<!-- ダイアレクトのクラス名設定 -->
<!-- TODO: データベースを変更する場合、ここを修正します。-->
<component class="nablarch.core.db.dialect.H2Dialect"/>
</property>
</component>
設定値の例を以下に示す。
データベース | JDBCドライバのクラス名 | ダイアレクトのクラス名 |
---|---|---|
H2 | org.h2.Driver | nablarch.core.db.dialect.H2Dialect |
Oracle | oracle.jdbc.driver.OracleDriver | nablarch.core.db.dialect.OracleDialect |
PostgreSQL | org.postgresql.Driver | nablarch.core.db.dialect.PostgreSQLDialect |
DB2 | com.ibm.db2.jcc.DB2Driver | nablarch.core.db.dialect.DB2Dialect |
SQL Server | com.microsoft.sqlserver.jdbc. SQLServerDriver |
nablarch.core.db.dialect.SqlServerDialect |
4.2.5. 起動方法¶
Unix系の場合
以下のコマンドを実行する。
mvn compile exec:java
その後、ブラウザを起動して、 http://localhost:7979/index.html を表示する。
Windowsの場合
ディレクトリ直下にあるバッチファイルを実行する。 ファイルをダブルクリックするか、コマンドプロンプトから起動する。
nse-web.bat
コマンドを実行すると、自動的にブラウザが起動する。
ちなみに
- 初回起動時等、起動に時間がかかる場合、ブラウザがタイムアウトすることがある。 この場合は、起動完了後にブラウザをリロードする。
- 本ツールは、Internet Explorerでは、正常に動作しない。Internet Explorerが起動した場合は、URLをコピーし、FirefoxまたはChromeのアドレス欄に貼り付けること。
4.2.6. 操作方法¶
初回起動時では、カレントディレクトリ配下のSQLファイルの一覧を表示するが、 存在しない場合は、以下のような画面が表示される。
右下の入力欄にローカルフォルダのパスを指定し、下図のように [再検索] をクリックすると その配下の検索してSQLファイルと各ファイルに記述されているステートメントの 一覧を表示する。
各ステートメント名をクリックすると、その内容と操作用のボタンが表示される。
ステートメント内の埋込み変数は入力フィールドになっており、内容を編集して [Run] をクリックすることで、当該ステートメントを実行できる。
また [Fill] をクリックすると、前回の実行時の入力フィールドの内容を復元する。
4.2.8. FAQ¶
Q1 :日付型(DATE/DATETIME/TIMESTAMP)フィールドへの値の設定はどのようにすればよいか?
A1 :SQL92のDATE/DATETIMEリテラルと同じ書式で記述する。 以下に例を示す。
1970-12-11
1970-12-11 12:01:20
また、キーワード SYSDATE
を指定することで、現在時刻が設定される。
Q2 :実行しても何も出力されずに異常終了してしまう場合、どう対処すればよいか?
A2 :起動時のDBコネクションエラーなどの一部のエラーは
標準エラー出力ではなく、実行ログファイルに出力される。
実行ログは、カレントディレクトリ直下に app.log
という名前で
出力されるので、その内容を確認して対処する。