ORCAとやりとりするために必要なポイントは2つ
2023/03/07 18:43 Filed in: ORCA
ORCAへの書き込み方法は大きく分けると2つ(※注釈)あります。
この方法は入出力出来る情報に制限がありますが、やはり正規の手順でデーターに触れるので安心感があります。 また必要なアプリケーションもありませんので、普通にAppleScriptでcurlコマンドを使って操作できる点もよいです。
もう一つはPSQLプロトコールを使ったORCAデーターベースに直接アクセスする方法です。 こちらはもちろんSQLコマンドの記載方法を知っていないと操作できません。 別途教科書など購入して勉強してみて下さい。 あと間違った修正の仕方をするとデータベーステーブル間の整合性がとれずにクラッシュしてORCAが閲覧不能になったします。 なのでダミーのサーバーで十分試験をした後に実戦投入する必要が有ります。 そういえば先日全患者の保険証終了期間のデーターを診療中に誤って変更してしまって、診察を止めて5分ぐらいかけてデーターベースをバックアップから復旧させた事が有りました・・。 あまり心臓によろしくないですが、その分自由度が高く、私のシステムでもどうしても必要不可欠な部分があります。 このPSQLは元々のMacOSには含まれていませんので、自分でインストールする必要があります。
※実はもう一つあるのですがそれはSystem Eventを使ったGUIスクリプティングで、手入力の作業をごり押しで再現する方法です。 この方法は遅いですし、作業中にあらゆる入力がとまりますのであまりお勧め出来ません。
パッケージマネージャであるHomebrewを使ってpostgresql=PSQLをインストールする方法もありますが、私の環境だとどうもbrewのインストールが上手く行かなかったので、MacPortを使ってpostgresqlをインストールしています。 MacPortのインストールには 1)先ずXcodeを起動して認証させた後、2)Apple developer siteからCommand-line toolをダウンロードしてインストールする必要した上で、MacPortのインストーラーを使ってパッケージマネージャMacPortをインストールする必要があります。 詳細はMacPortのページに記載されているので読んでみてください。 MacPortがインストールできたらterminalで sudo port install postgresql15 って入力すると現在の最新版のPSQLがインストールがされると思います。
PSQLは基本的には対話形式でコマンドを打ち込んでデーターベースにアクセスする事を想定して作られています。しかしApplescriptでは対話式のコマンド操作ができませんので、基本的にシングルラインのShell scriptになります。 一番厄介なのはログイン認証を自動化させる方法ですね。 curlの様にヘッダーなどにログイン情報を記載することは出来ず、ユーザーのホームディレクトリーのルートに、.pgpassと言う、ドットで始まる不可視ファイルを作成しそこに、サーバー名:ポート番号:ログインデータベース名:ログイン名:パスワードというセットを記載して。 例えば www.hogehoge.com:5432:orca:orca:password ですかね? 最後に.pgpassの所有権を600に設定する必要があります。 sudo chmod 600 ~/.pgpass かな? そうやって.pgpassに設定することでID Password認証を自動化出来、Singlelineでコマンドを完了することが出来ます。 例えば、psql -h 'www.hogehoge.com' -U orca -d orca -q -A -t -c 'SELECT * xxx;"とか言う形ですね。 ここでオプションとして-qを設定することで、シングルラインで対話無しで結果だけ戻す事が出来る様になります。 ここのオプション-Aは 行揃え無しのテーブルモード、 -tは 一番上のラインの説明行無しの返答を返すという意味で、そういったオプションについては自分で勉強してみて下さい。 ググレば簡単に出て来ます。 例えば今ググルとこことかどうですか?
私はこれをスクリプトの中で多用するので次の章で紹介する様なサブスクリプト、アップルスクリプトで言うハンドラーというクラスを作ってます。
余談になりますが、実は私開業して4年ほどやり方が解らなくて入力を全てSystem EventのGUIスクリプティングで手作業での入力をエミュレートして入力させてました。 手で入力するよりも圧倒的に正確なのですが、やはり遅いですしその間あらゆる操作を中断する必要があるので、悩んで色々試していましたが、この.pgpassにログイン情報をセットして対話無しシングルラインでデーターを取り出せる方法を知った時には密かにガッツポーズ出してました。 ここが一つのブレークスルーだったと思います。
ORCA側が用意した、WebAPIシステムによる入力方法
この方法は入出力出来る情報に制限がありますが、やはり正規の手順でデーターに触れるので安心感があります。 また必要なアプリケーションもありませんので、普通にAppleScriptでcurlコマンドを使って操作できる点もよいです。
PSQLを使ったデーターベースを直接操作する方法
もう一つはPSQLプロトコールを使ったORCAデーターベースに直接アクセスする方法です。 こちらはもちろんSQLコマンドの記載方法を知っていないと操作できません。 別途教科書など購入して勉強してみて下さい。 あと間違った修正の仕方をするとデータベーステーブル間の整合性がとれずにクラッシュしてORCAが閲覧不能になったします。 なのでダミーのサーバーで十分試験をした後に実戦投入する必要が有ります。 そういえば先日全患者の保険証終了期間のデーターを診療中に誤って変更してしまって、診察を止めて5分ぐらいかけてデーターベースをバックアップから復旧させた事が有りました・・。 あまり心臓によろしくないですが、その分自由度が高く、私のシステムでもどうしても必要不可欠な部分があります。 このPSQLは元々のMacOSには含まれていませんので、自分でインストールする必要があります。
※実はもう一つあるのですがそれはSystem Eventを使ったGUIスクリプティングで、手入力の作業をごり押しで再現する方法です。 この方法は遅いですし、作業中にあらゆる入力がとまりますのであまりお勧め出来ません。
MacOSにPSQLをインストールする方法
パッケージマネージャであるHomebrewを使ってpostgresql=PSQLをインストールする方法もありますが、私の環境だとどうもbrewのインストールが上手く行かなかったので、MacPortを使ってpostgresqlをインストールしています。 MacPortのインストールには 1)先ずXcodeを起動して認証させた後、2)Apple developer siteからCommand-line toolをダウンロードしてインストールする必要した上で、MacPortのインストーラーを使ってパッケージマネージャMacPortをインストールする必要があります。 詳細はMacPortのページに記載されているので読んでみてください。 MacPortがインストールできたらterminalで sudo port install postgresql15 って入力すると現在の最新版のPSQLがインストールがされると思います。
PSQLをApplescriptで使うために必要な設定
PSQLは基本的には対話形式でコマンドを打ち込んでデーターベースにアクセスする事を想定して作られています。しかしApplescriptでは対話式のコマンド操作ができませんので、基本的にシングルラインのShell scriptになります。 一番厄介なのはログイン認証を自動化させる方法ですね。 curlの様にヘッダーなどにログイン情報を記載することは出来ず、ユーザーのホームディレクトリーのルートに、.pgpassと言う、ドットで始まる不可視ファイルを作成しそこに、サーバー名:ポート番号:ログインデータベース名:ログイン名:パスワードというセットを記載して。 例えば www.hogehoge.com:5432:orca:orca:password ですかね? 最後に.pgpassの所有権を600に設定する必要があります。 sudo chmod 600 ~/.pgpass かな? そうやって.pgpassに設定することでID Password認証を自動化出来、Singlelineでコマンドを完了することが出来ます。 例えば、psql -h 'www.hogehoge.com' -U orca -d orca -q -A -t -c 'SELECT * xxx;"とか言う形ですね。 ここでオプションとして-qを設定することで、シングルラインで対話無しで結果だけ戻す事が出来る様になります。 ここのオプション-Aは 行揃え無しのテーブルモード、 -tは 一番上のラインの説明行無しの返答を返すという意味で、そういったオプションについては自分で勉強してみて下さい。 ググレば簡単に出て来ます。 例えば今ググルとこことかどうですか?
私はこれをスクリプトの中で多用するので次の章で紹介する様なサブスクリプト、アップルスクリプトで言うハンドラーというクラスを作ってます。
余談になりますが、実は私開業して4年ほどやり方が解らなくて入力を全てSystem EventのGUIスクリプティングで手作業での入力をエミュレートして入力させてました。 手で入力するよりも圧倒的に正確なのですが、やはり遅いですしその間あらゆる操作を中断する必要があるので、悩んで色々試していましたが、この.pgpassにログイン情報をセットして対話無しシングルラインでデーターを取り出せる方法を知った時には密かにガッツポーズ出してました。 ここが一つのブレークスルーだったと思います。