PostgreSQLコマンドラインツール--pgcli試用


概要
pgcliはPostgreSQLに対するコマンドラインツールで、SQLを文法的にハイライト表示し、入力を自動的に提示できるのが特徴です.(また、MySQLにも似たようなコマンドラインツールmycliがあります).
Webサイト:http://pgcli.com/
ライセンス契約:BSD 3-clause license
開発言語:Python
サポートシステム:Linux、OS X、Windowsは理論的にはできますが、まだテストされていません.
インストールの試用
環境:centos 32 bit.
データベース:PostgreSQL 9.4
1.PostgreSQLのインストール
コンパイルインストールまたはインストールパッケージのグラフィックス化インストールが可能です.参考:PostgreSQLのLinuxでのソースコードのコンパイルインストール.
2.pythonのインストール
pythonをインストールします.参考:python開発環境PostgreSQLデータベースの構築と接続.
3.python-pipのインストール
まずyumでpython-pipをインストールしてみたところ、利用可能なパッケージがなかった.
[[email protected] ~]# yum install python-pip
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * extras: mirrors.cqu.edu.cn
 * updates: mirrors.163.com
base                                                     | 3.7 kB     00:00     
extras                                                   | 3.4 kB     00:00     
updates                                                  | 3.4 kB     00:00     
updates/primary_db                                       | 3.1 MB     00:04     
Setting up Install Process
No package python-pip available.
Error: Nothing to do

次に、特定のアドレスを設定してインストールし、インストールに成功しました.
[[email protected] ~]# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1379k  100 1379k    0     0  67361      0  0:00:20  0:00:20 --:--:-- 2612k
[[email protected] ~]# python get-pip.py
Collecting pip
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', gaierror(-2, 'Name or service not known'))': /simple/pip/
/tmp/tmpEAjwcs/pip.zip/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  Downloading pip-7.1.2-py2.py3-none-any.whl (1.1MB)
    100% |████████████████████████████████| 1.1MB 209kB/s 
Collecting setuptools
  Downloading setuptools-19.1.1-py2.py3-none-any.whl (463kB)
    100% |████████████████████████████████| 466kB 617kB/s 
Collecting wheel
  Downloading wheel-0.26.0-py2.py3-none-any.whl (63kB)
    100% |████████████████████████████████| 65kB 1.4MB/s 
Collecting argparse (from wheel)
  Downloading argparse-1.4.0-py2.py3-none-any.whl
Installing collected packages: pip, setuptools, argparse, wheel
Successfully installed argparse-1.4.0 pip-7.1.2 setuptools-19.1.1 wheel-0.26.0

4.pgcliのインストール
[[email protected] ~]# pip install pgcli

エラー:
Error: pg_config executable not found.
Please add the directory containing pg_config to the PATH
or specify the full executable path with the option:
    python setup.py build_ext --pg-config /path/to/pg_config build ...
or with the pg_config option in 'setup.cfg'.
----------------------------------------
Command python setup.py egg_info failed with error code 1 in /tmp/pip-build/psycopg2

解決方法:pg_configはPostgreSQLのbinディレクトリの下にあるので、環境変数PATHでbinパスを構成します.
[[email protected] ~]# export PATH=$PATH:/opt/PostgreSQL/9.4/bin/

インストールを再実行するには、次の手順に従います.
[[email protected] ~]# pip install pgcli

5.pgcliを実行し、PostgreSQLに接続してクエリーを実行する
[[email protected] ~]# pgcli --help
Usage: pgcli [OPTIONS] [DATABASE] [USERNAME]
Options:
  -h, --host TEXT     Host address of the postgres database.
  -p, --port INTEGER  Port number at which the postgres instance is listening.
  -U, --user TEXT     User name to connect to the postgres database.
  -W, --password      Force password prompt.
  -w, --no-password   Never prompt for password.
  -v, --version       Version of pgcli.
  -d, --dbname TEXT   database name to connect to.
  --pgclirc TEXT      Location of pgclirc file.
  --help              Show this message and exit.
[[email protected] ~]# pgcli -h  -p 5433 -U postgres 
could not translate host name "-p" to address: Name or service not known
[[email protected] ~]# pgcli -h 127.0.0.1 -p 5433 -U postgres -d postgres
Password: 
Version: 0.20.1
Chat: https://gitter.im/dbcli/pgcli
Mail: https://groups.google.com/forum/#!forum/pgcli
Home: http://pgcli.com
postgres> 
Time: 0.000s
postgres> select count(*) from public.a0;
+---------+
|   count |
|---------|
|       0 |
+---------+
SELECT 1
Time: 0.030s

図1.pgcliがsql文に対して構文的にハイライト表示されていることがわかります.
PostgreSQL命令行工具 -- pgcli 试用
図2.pgcliは入力に自動ヒント機能があることがわかる(簡単な試験環境では反応速度が理想的であり、他の場合は試験が必要である).
PostgreSQL命令行工具 -- pgcli 试用