(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【HiRDB/Linux】pdsqlコマンドで任意のSQLを発行する流れ

スポンサーリンク

はじめに

日立製のデータベースであるHiRDBに接続するには、pdsqlコマンドというクライアント側のツールを利用するのが最も簡単です。
本記事では、UNIX環境に対してインストールを行い、実際にDBに接続する流れを記載しました。

環境情報
  • Amazon Linux 2
  • HiRDB/Run Time Version 10
  • HiRDB SQL Executer

コマンドの発行準備

体験版または製品版のメディアをサーバ内に配置し、マウント。

# mount -o loop ./XXX.ISO /mnt/media

PPツールでsetupを行い、以下のようにRun TimeとSQL Executerをインストールします。

   PP-No.         VR        Install date     PP-NAME
001 P-8362-1BA1    xx      xx HiRDB/Run Time Version 10
002 R-F19428-517   xx      xx HiRDB SQL Executer

そうすると/opt配下にpdsqlとHiRDBというディレクトリができます。

# ls /opt/
HiRDB  pdsql

ちなみにHiRDB配下にpdsqlのjarが入っているので、HiRDB SQL Executerが入手できない場合はJavaプログラムから同ライブラリを利用することでpdsqlコマンドなしに接続することも可能です。

本題ですが、pdsqlコマンドは以下のパスから実行します。私は環境のせいか以下のエラーとなりました。

# /opt/pdsql/pdsql 
-bash: /opt/pdsql/pdsql: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

これを回避するために追加でライブラリをインストール。

# yum install glibc.i686
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                                                  
...
Installed:
  glibc.i686 0:2.26-64.amzn2.0.5                                                                                              
...
Complete!

次はライブラリのパスが通っていないエラーとなったので

# /opt/pdsql/pdsql 
/opt/pdsql/pdsql: error while loading shared libraries: libzclt.so: cannot open shared object file: No such file or directory

以下にあるパスを通すために

/opt/HiRDB/client/xds/lib/libzclt.so

環境変数を定義しました。

# export LD_LIBRARY_PATH=/opt/HiRDB/client/lib

これにてコマンドが正常に実行できるようになりました。

# /opt/pdsql/pdsql 
 
Password: 

接続&SQL発行

HiRDBサーバの接続情報として、ユーザ,サーバ名,ポート番号,文字コードを環境に合わせて以下のように定義。PDHOSTはIPアドレに紐づくホスト名を入れます。

export PDUSER='"admin"/"admin"'
export PDHOST=test
export PDNAMEPORT=22200
export PDCLTLANG=SJIS
export PDLANG=SJIS

注意点として、ユーザ名が小文字であれば上のようにシングルクオーテーションとダブルクオテーションで囲むこと。これをしないと大文字として認識されて以下のようなユーザエラーとなります。

KFPA11561-E Specified authorization identifier ADMIN has no connect privilege

設定がうまくいくと、pssqlコマンドにてインタラクティブに任意のSQLコマンドが打てるようになります。例えば、存在するテーブル名を取得するSQLを押下すると以下のような結果に。SQLの発行ができました。

SELECT TABLE_NAME FROM MASTER.SQL_TABLES;
 
 TABLE_NAME                    
 ------------------------------
 SQL_ACCESS_SECURITY           
 SQL_ALIASES                   
 ...           
 
KFPX27010-I          133 rows selected

抜ける時は exit で抜けれます。

終わりに


pdsqlコマンドですが、以下のようなファイルタイプのコマンドとなっているため、少し実行時に癖があります。

/opt/pdsql/pdsql: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=xx, not stripped

本記事に記載の流れが、トラブルシューティングの一助になっていれば幸いです。