見出し画像

PowershellプロンプトからSQL実行(Apache Derby-03,Win,Powershell v5,Java19)

概要

Apache Derby付属のijにPowershellのパイプライン入力からSQLコマンドをインメモリモードで起動したApache Derbyに渡して実行結果を得る。
テスト用SQLはSYSIBM.SYSDUMMY1を利用した(OracleでDUALを使用する場合と同様)Select文で簡単な計算(5+4*3/2-1)の結果を表示するものを使用。

PS C:\Users\User> function prompt{"PS_v" + ($PSVersionTable.PSVersion.Major) +" "+ ">"}                               PS_v5> $ENV:JAVA_HOME
C:\Program Files\Eclipse Adoptium\jdk-19.0.2.7-hotspot\
PS_v5> $ENV:DERBY_HOME
PS_v5> $ENV:DERBY_HOME="C:\dbtool\db-derby-10.16.1.1-bin"
PS_v5 >java -version
openjdk version "19.0.2" 2023-01-17
OpenJDK Runtime Environment Temurin-19.0.2+7 (build 19.0.2+7)
OpenJDK 64-Bit Server VM Temurin-19.0.2+7 (build 19.0.2+7, mixed mode, sharing)
PS_v5> Write-Output "select 5+4*3/2-1 from SYSIBM.SYSDUMMY1;" | java -p $ENV:DERBY_HOME\lib "-Dij.connection.+=""jdbc:derby:memory:+;create=true""" -m org.apache.derby.tools/org.apache.derby.tools.ij
ijバージョン10.16
+* -    jdbc:derby:memory:+
*=現行接続
ij> 1
-----------
10

1行が選択されました
ij>
PS_v5 >

折角のPowershellなので答えの数字だけを行数指定というなんだかなな方法であるが、Select-Objectで取得してみる。もっとbash+grep的な方法も可能かもしれないがシンプルになりそうもないのであまり美しくない。

PS_v5 >Write-Output "select 5+4*3/2-1 from SYSIBM.SYSDUMMY1;" | java -p $ENV:DERBY_HOME\lib "-Dij.connection.+=""jdbc:derby:memory:+;create=true""" -m org.apache.derby.tools/org.apache.derby.tools.ij | Select-Object -Skip 5 -First 1
10
PS_v5 >

実行環境

PS_v5> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.22621.963
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.22621.963
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

PS_v5 >cmd version
Microsoft Windows [Version 10.0.22621.1105]
(c) Microsoft Corporation. All rights reserved.

参照

Windows環境でJavaを使用する。
Windows環境のJavaでApache Derbyを使用する。
WindowsコマンドプロンプトからSQL実行する(Apache Derby-02,Win,cmd,Java19)

この記事が気に入ったらサポートをしてみませんか?