fc2ブログ

Home > ORACLE > Cygwinでrlwrap

Cygwinでrlwrap

  • Posted by: Nakunaru
  • 2011-02-13 Sun 15:28:15
  • ORACLE
追記:Cygwin版のrlwrapで余計な改行が出力される問題があり、以下の記事で解決しています。
検索で飛んできた方はどうぞ。
http://hitai.blog72.fc2.com/blog-entry-85.html





WindowsのDOSプロンプトでSQL*Plusを起動すると、上下の矢印キーでコマンドヒストリが呼び出せますけど、Cygwinのプロンプトではできません。
DB2のCLPも一緒で、矢印キーによるコマンドヒストリは使えません。

こういったコマンドヒストリ機能がないツールでも、ヒストリ機能を無理やり使えるようにしてしまうのがReadLineWrapperと呼ばれるもので、Linuxではrlwrapというパッケージが提供されています。

で、Cygwinでは使えないの?と探してみたらあっさりありました。


こちらからダウンロードできました。
http://ftp.yz.yamagata-u.ac.jp/pub/cygwin/release/rlwrap/



適当にダウンロードしてきたら、展開するとusrというディレクトリが作成される。

tar jxf rlwrap-0.24-1.tar.bz2




└─usr
├─bin
│ rlwrap.exe

└─share
├─doc
│ ├─Cygwin
│ │ rlwrap-0.24.README
│ │
│ └─rlwrap-0.24
│ AUTHORS
│ BUGS
│ ChangeLog
│ COPYING
│ INSTALL
│ NEWS
│ README
│ TODO

├─man
│ └─man1
│ rlwrap.1.gz

└─rlwrap
ftp
testclient


この中のrlwrap.exeを適当にパスが通ったディレクトリに置いて、

rlwrap sqlplus / as sysdba



とすればヒストリ機能が使えるようになる。



ただし、このままだ

SQL> connect / as sysdba
?????????????B


こんな感じで、日本語メッセージが化けてしまう。

解決するには、

.bashrcに以下を追加
export LANG=ja_JP.SJIS
export TZ=JST-9
export JLESSCHARSET=japanese-sjis
alias ls='ls --show-control-chars'

.inputrcに以下を追加
set kanji-code sjis
set convert-meta off
set meta-flag on
set output-meta on

参考:http://seiza.dip.jp/computer/20071028001115338.html

これで解決。日本語も通ります。


rlwrap.exe sqlplus / as sysdba
SQL*Plus: Release 11.1.0.6.0 - Production on 木 2月 10 15:38:05 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
に接続されました。
SQL>
SQL> select * from hr.regions;
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
SQL>
SQL> insert into hr.regions values(11,'新世界');
1行が作成されました。
SQL> select * from hr.regions;
REGION_ID REGION_NAME
---------- -------------------------
11 新世界
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
SQL> rollback;
ロールバックが完了しました。




もちろんDB2のCLPでも日本語が通ります。


./rlwrap.exe db2
(c) Copyright IBM Corporation 1993,2002
DB2 ADCL 9.1.0 コマンド行プロセッサー
コマンド・プロンプトからデータベース・マネージャーのコマンド、および SQL
ステートメントを呼び出せます。 例:
db2 => connect to sample
db2 => bind sample.bnd
一般ヘルプには ? をタイプしてください。
コマンドのヘルプには ? command をタイプしてください。 command
は、データベース・マネージャー・コマンドの主要なキーワードの
いくつかです。 例:
す。
? CATALOG は全 CATALOG コマンドのヘルプです。
db2 対話モードを抜けるには、コマンド・プロンプトで QUIT
とタイプしてください。対話モード以外では、すべてのコマンドに接頭語 'db2'
を付ける必要があります。
現在のコマンド・オプションの設定をリストするには、 LIST COMMAND OPTIONS
とタイプしてください。
詳細は、「オンライン・リファレンス」を参照してください。
db2 =>




あとは、rlwrapの置き場所だけ決めればOKです。
私の場合は、/optの配下に本体を配置し、/usr/binの配下のシンボリックリンクを置いてみました。

ln -s /opt/rlwrap/usr/bin/rlwrap.exe /usr/bin/rlwrap.exe



そして、sql*plusとかclpはaliasをはっておきます。
.bashrc

#rlwrap Settings
alias sqlplus='rlwrap.exe sqlplus'
alias db2='rlwrap.exe db2'





[関連]
http://hitai.blog72.fc2.com/blog-entry-77.html
http://hitai.blog72.fc2.com/blog-entry-76.html

スポンサーサイト



Comments: 0

Comment Form
サイト管理者にのみ通知する

Trackback+Pingback: 0

TrackBack URL for this entry
http://hitai.blog72.fc2.com/tb.php/78-934bebe8
Listed below are links to weblogs that reference
Cygwinでrlwrap from ヒビコレショウジン

Home > ORACLE > Cygwinでrlwrap

タグクラウド
Categories
Monthly
Recent Entries
Recent Comments
Recent Trackbacks
Appendix

Nakunaru

    Author:Nakunaru

    データベース(ORACLEとかSQL ServerとかDB2とかMySQLとか)とか技術者教育とかプログラムとか。
    気になる技術を少しずつ勉強していきます。


Return to page top