Clementine自動実行でデータベースログイン情報を仕込んでおく
9月19日の記事 にてClementineのバッチ機能について説明しましたが、データベースの入出力ノードが存在するストリームをバッチで実行しようとすると、コマンド実行にデータベースのユーザーとパスワードを問われてしまい、ここで入力する必要があります。
ここで手入力を要求されるようでは自動化には程遠くなってしまいますが、ユーザーとパスワードはあらかじめ仕込んでおくことが出来ますので、問題ございません。
9月19日の記事 のとおり、
clemb -stream 実行したいストリームファイルのパス -execute
という構文で実行できるのですが、これにClementineスクリプトでデータベース入力ノードを指定する「-P:databasenode」を利用して、
clemb -stream 実行したいストリームファイルのパス -P:databasenode.password="パスワード" -execute
と指定すると、データベース入力ノードのパスワードをあらかじめ仕込んで実行することが出来ます。実際にはこんなコマンドになるのでしょうか?。
clemb -stream C:\stream\test.str -P:databasenode.password="dbpass12" -execute
これを応用し、ユーザーも仕込んでおく場合は「-P:databasenode.username」を組み込んで、
clemb -stream 実行したいストリームファイルのパス -P:databasenode.username ="ユーザー" -P:databasenode.password="パスワード" -execute
とすれば、ユーザーとパスワードを省略できます。
さらに、データベース出力ノードもある場合は、スクリプトの「-P:databaseexportnode」を利用して、
clemb -stream 実行したいストリームファイルのパス -P:databasenode.username ="ユーザー" -P:databasenode.password="パスワード" -P:databaseexportnode.username ="ユーザー" -P:databaseexportnode.password="パスワード"-execute
とすることで対処できますし、複数のデータベースからデータを取得していてそれぞれユーザーやパスワードが異なる場合は、Clementineスクリプトで-Pのあとにノード名を入れることで対処できたことを利用して、
clemb -stream 実行したいストリームファイルのパス -Pデータ1:databasenode.username ="ユーザー" -Pデータ1:databasenode.password="パスワード" -Pデータ2:databasenode.username ="ユーザー2" -Pデータ2:databasenode.password="パスワード2" -P:databaseexportnode.username ="ユーザー" -P:databaseexportnode.password="パスワード"-execute
とすることで応用できます。
だんだん説明が足しあわされて、長いコマンド例になってわかりにくくなり申し訳ございませんが、慣れればさっくり設定できるようになりますのでご容赦ください。