
- PostgreSQL
- EDB
アシストがPostgreSQLグローバル開発グループのSponsor一覧に掲載されたので、中の人に話を聞いてみた!(前編)
アシストは2009年からPostgreSQLのプロダクトサポートを開始、2010年に日本PostgreSQLユーザー会への協賛会員として参画、2012年にPostgreSQL エンタープライズ・コンソーシアムに参画しています。現在JPUGで活躍する田中・喜田の両名がどのような活動をしているのか2回にわたってお届けします。
|
EDB Postgres Advanced Server(EPAS)のコマンドライン・インターフェースには、psql(edb-psql)の他にEDB*Plusがあります。EDB*Plusは、Oracle DatabaseのSQL*Plusと互換性があるため、Oracle Databaseに慣れている方はそちらのほうが使いやすいでしょう。今回は、EDB*Plusの簡単な使用方法と、SQL*Plusとの違いをご紹介します。
EDB*Plusは、EPAS上でコマンドライン・インターフェースを提供するユーティリティです。EDB*Plusでは、SQLコマンド、Oracle PL/SQLと互換性のあるSQL Procedural Language(SPL)無名ブロック、EDB*Plusコマンドを使うことができます。
EDB*PlusコマンドはOracleのSQL*Plusコマンドと互換性があり、以下のような様々な機能を提供します。
- データベースオブジェクトにクエリを発行
- ストアドプロシージャを実行
- SQLコマンドの出力を整形
- バッチスクリプトを実行
- OSコマンドを実行
- 出力を記録
EPAS9.6以前のバージョンをご利用の場合、デフォルトの設定でEPASをインストールすることによりEDB*Plusはインストールされます。EPASのインストール手順については、弊社作成の「 はじめてのEDB Postgres (製品概要・構築編) 」または マニュアル をご参考になさってください。
EPAS10以降のバージョンをご利用の場合、EDB*PlusはEPASインストール時にインストールされないため、EPASをインストール後にyum(Linuxのみ)またはStackBuilder Plusからインストールします。yumやStackBuilder PlusからEDB*Plusをインストールする詳細な手順については、 マニュアル をご参考になさってください。
EDB*Plus は、GUIのアプリケーションメニューから選択するか、OSコマンドから直接EDB*Plus(Windowsの場合:edbplus.bat、Linuxの場合:edbplus.sh)を起動することで使用できます。
OSコマンドから直接EDB*Plusを実行する場合、Windows環境では実行ファイルの拡張子を付けずにEDB*Plusを使用できますが、Linux環境ではデフォルトで拡張子を付けて実行する必要があります。Linux環境でも実行ファイルの拡張子を付けずにEDB*Plusを使用するには、aliasコマンドで拡張子無しのedbplusコマンドを作成します。
以下では、Linux環境でEDB*PlusからEPASに接続してemp.sqlというEMP表を参照するバッチスクリプトを実行するまでの手順をご紹介します。
OS:Oracle Enterprise Linux 6.4 64bit
DB:EDB Postgres Advanced Server 10.3.8
EDB*Plus:v10.36.0.0
--aliasコマンドでedbplusコマンドを作成 ※この手順は任意です。
# su - enterprisedb $ source /opt/edb/as10/pgplus_env.sh #EPAS関連の各種環境変数の設定。
$ alias edbplus='/opt/edb/as10/edbplus/edbplus.sh' $ edbplus /nolog EDB*Plus: Release 10 (Build 36.0.0) Copyright (c) 2008-2017, EnterpriseDB Corporation. All rights reserved. SQL> SQL> exit
--edbデータベースへの接続情報を格納する$EDBHOME/edbplus/login.sqlを確認
$ cat $EDBHOME/edbplus/login.sql define edb="localhost:51001/edb" #login.sqlでは、Oracleのtnsnames.oraで設定する接続識別子と同様にデータベースへの接続情報を設定。 #define <接続識別子名>=host[:port][/dbname]の構文で接続情報を設定。 #portがデフォルトの5444の場合、portとdbname(デフォルトはedb)の指定は必須ではない。
--emp.sqlの内容を確認 ※事前に$EDBHOME/edbplusディレクトリ配下に以下の内容で作成しています。
$ cd $EDBHOME/edbplus $ cat emp.sql set linesize 100 set pagesize 100 describe emp select * from emp;
--edbデータベースに接続
$ cd $EDBHOME/edbplus #@<接続識別子>を使用して接続する場合、$EDBHOME/edbplusディレクトリでedbplus username/passwordコマンドを実行する必要がある。
$ edbplus enterprisedb/oracle@edb Connected to EnterpriseDB 10.3.8 (localhost:51001/edb) AS enterprisedb EDB*Plus: Release 10 (Build 36.0.0) Copyright (c) 2008-2017, EnterpriseDB Corporation. All rights reserved. SQL>
--EDB*Plusからemp.sqlを実行
SQL> @emp Name Null? Data Type ------------------------------------------------------ -------- ----------------------------------- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE TIMESTAMP(6) SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ---------- --------- ----- ----------------------------- --------- --------- ------ 7369 SMITH CLERK 7902 1980-12-17 00:00:00 800.00 20 7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600.00 300.00 30 7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250.00 500.00 30 7566 JONES MANAGER 7839 1981-04-02 00:00:00 2975.00 20 7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250.00 1400.00 30 7698 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850.00 30 7782 CLARK MANAGER 7839 1981-06-09 00:00:00 2450.00 10 7788 SCOTT ANALYST 7566 1987-04-19 00:00:00 3000.00 20 7839 KING PRESIDENT 1981-11-17 00:00:00 5000.00 10 7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500.00 0.00 30 7876 ADAMS CLERK 7788 1987-05-23 00:00:00 1100.00 20 7900 JAMES CLERK 7698 1981-12-03 00:00:00 950.00 30 7902 FORD ANALYST 7566 1981-12-03 00:00:00 3000.00 20 7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300.00 10 14 rows retrieved.
以上のように、EDB*PlusではSQL*Plusと同様に@<スクリプトファイル名>でのバッチスクリプト実行、DESCRIBEコマンド実行ができます。
EDB*Plus上でHOSTコマンドでOSコマンドを実行することはできますが、"!"でOSコマンドを実行することはできません。
SQL> host pwd /home/enterprisedb SQL> host id uid=525(enterprisedb) gid=525(enterprisedb) 所属グループ=525(enterprisedb) context=unconfined_u:unconfined_r:unconfined_java_t:s0-s0:c0.c1023 SQL> ! id 2 3
SQL*Plusコマンドと互換性のあるEDB*Plusコマンドもありますが、全てのSQL*Plusコマンドに対応しているわけではありません。以下が、EDB*Plusコマンドの内容です。
SQL> help index Type 'HELP [topic]' for command line help. @ ACCEPT APPEND CHANGE CLEAR COLUMN CONNECT DEFINE DEL DESCRIBE DISCONNECT EDBPLUS EDIT EXIT GET HELP HOST INDEX INPUT LIST PASSWORD PAUSE PRINT PROMPT QUIT REMARK SAVE SET SHOW SPOOL START TRIMS UNDEFINE VARIABLE
EDB*PlusはSQL*Plusとの互換性を意識して開発されているため、psql(edb-psql)との互換性がなくなっている部分があります。以下に、psql(edb-psql)との互換性がない部分をご紹介します。
psql(edb-psql)ではデフォルトの設定で自動コミットは有効ですが、EDB*Plusではデフォルトの設定で無効です。EDB*Plusで自動コミットを有効にしたい場合には以下のコマンドを実行する必要があります。
SQL> SET AUTOCOMMIT ON SQL>
psql(edb-psql)ではSETコマンドによりセッション単位でEPASのパラメーターを設定/変更できましたが、EDB*PlusのSETコマンドはSQL*Plusと同様にシステム変数などの設定を行うコマンドであるため、EPASのパラメーターを設定/変更することはできません。EDB*Plusを使用してセッション単位でEPASのパラメーターを設定/変更する場合にはALTER SESSION文を実行する必要があります。
以下の例では、EDB*Plusを使用してclient_encodingパラメーターの設定をSJISに設定しています。
SQL> ALTER SESSION SET client_encoding=SJIS; Session altered.
psql(edb-psql)ではSHOW ALLコマンドでEPASのパラメーター設定を確認できましたが、EDB*PlusのSHOW ALLコマンドは変数の設定を確認するコマンドであるため、EPASのパラメーター設定を確認することができません。EDB*PlusでSHOWコマンドを使用してパラメーター設定を確認する場合にはSHOW PARAMETERコマンドを実行する必要があります。
SQL> SHOW PARAMETER NAME VALUE --------------------------------------- --------------------------------------- DateStyle ISO, DMY IntervalStyle postgres TimeZone Asia/Tokyo allow_system_table_mods off ...(以降省略)
今回はEDB*Plusの簡単な使用方法と合わせてSQL*Plusと異なる点についてもご紹介しました。EDB*Plusは、SQL*Plusと互換性があるものの今回ご紹介したように一部異なる点もあるため、本ブログを参考に相違点を認識した上で使用してみてください。
![]() |
---|
サービス事業部 サポートセンター
2007年にアシストに入社して以来、ORACLE製品やPostgreSQL・EDB Postgres製品のサポートに従事してきました。このブログではサポート対応で得た知識を元に、お客様がお困りになることが多い問題や各製品の新機能に関する検証結果などを紹介します。
■本記事の内容について
本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。
■商標に関して
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
アシストは2009年からPostgreSQLのプロダクトサポートを開始、2010年に日本PostgreSQLユーザー会への協賛会員として参画、2012年にPostgreSQL エンタープライズ・コンソーシアムに参画しています。現在JPUGで活躍する田中・喜田の両名がどのような活動をしているのか2回にわたってお届けします。
2022年4月22日(金)に開催する「アシスト流 EDB活用術 on AWS」の内容をチラ見せ。「EDBって何?」という方から「EDBは知ってるけどクラウド上でもEDB??」という方まで、ぜひお申し込みください。
本記事では、CSVファイルをPostgreSQLデータベースにインポートするために必要な手順を説明します。データベースにログインしている状態でpsqlプロンプトからCSVファイルを呼び出す方法と、シェルプロンプトから呼び出す方法を説明します。