工学社刊 「はじめてのSQL」著者によるサポートページ

このページは2006年12月15日、工学社より刊行された「はじめてのSQL」の著者によるサポートページです。本で書ききれなかった説明や、「エラーかな?」と思ったときの解決法の提案などを随時アップして行きますので、参考にしてください。

清水 美樹


注意:カンマ区切りテキストは、カンマ(,)のあとに空白を入れないで!

のっけから重大な注意事項でまことに恐縮ですが、本書では72ページ表3-2-1をはじめ、随所で「カンマ区切りテキストファイル」に列記したデータを表にまとめて読み込ませています。その際、カンマのあとに空白を入れると、文字列データの場合空白もコミでデータになってしまいます。

APEXはこの空白をキレイに詰めてデータを表示してくれますので、うまく読み込めたように見えます。しかし、たとえば

select * from CAFE where ITEMNAME='肉まん';

のように問合せをしても、データは見つかりません。' 肉まん'という最初に空白のあるデータとして格納されているのです。

では、このような読み込み方をされてしまった場合、表を破棄してcsvファイルを書き直さなければならないのでしょうか。

大丈夫です。本書では扱っていませんが、TRIMという文字列関数があります。幸い空白が問題になるのは文字列データだけなので、以下のように打ちます。

update CAFE
set ITEMNAME=TRIM(' ' from ITEMNAME),
CATEGORY=TRIM(' ' from CATEGORY)
;

「'」と「'」の間には、カンマ区切りファイルで入れてしまった空白(おそらくは半角スペースですね)をひとつ入れてください。これは、列「ITEMNAME」及び「CATEGORY」から、両端に「''」ではさまれた文字列があった場合は取り除く、というコマンドです。対象には空白もアリです。取り除くべきものがなければ無視されますから影響はありません。

これで、すでに作ってしまった表の文字列データから、空白が取り除かれます。


XEのVista対応について

「XE」こと「Oracle Database 10g Express Edition」の10.2以降はVistaにも対応しますが、Ultimate, Business, Enterpriseエディションのみとされています。


XEのLinux版のインストール方法

Vistaの場合他のエディションを調達するのは難しい(煩わしい)ものがありますから、対応するエディションがお手元にない場合は、思い切ってLinuxを導入して見られるのはいかがでしょうか。

Linuxの場合も、実は導入は非常に簡単です。
正確な内容としては英語版のドキュメントが公開されていますが、これを元にワタクシが少し説明をさせていただきましょう。ゆえに、以下の記述にはワタクシの私見や推測が入っており、XEで保証している方法ではないことをあらかじめお断りさせていただきます。

対応ディストリビューション:正式にはRed Hat Enterprise Linuxの3及び4, SUSE Linux Enterprise Editionの9, Fedora Core 4, Debian 3.1などがサポートに上がっていますが、個人向けのディストリビューションではこれらに近いものなら動くのではないかと思われます。筆者はOpenSUSE11.0にインストールできました。

ファイル(インストール)形式:Linux用のインストールパッケージは、ディストリビューションにより大きく二つに分かれます。UbuntuなどDebian系のディストリビューションでは「deb」、FedoraやSUSEなどでは「rpm」という拡張子のついたものがよく利用されます。実際は両方の形式がサポートされている場合が多いのですが、XEでは二種類が用意されていますから、典型的に利用する形式を選ぶのが無難でしょう。

2008年12月の時点では、「rpm」型ファイルは「oracle-xe-univ-10.2.0.1-1.0.i386.rpm」,「deb」型ファイルは「oracle-xe-universal_10.2.0.1-1.0_i386.deb」です。
なお、ダウンロードサイトへ到達する方法が本書と少し異なっていますが、XEのホームへ行けばダウンロードサイトへのリンクがわかりやすく張ってありますから大丈夫でしょう。


「rpm」型ファイルからのインストール

ダウンロードした「rpm」型のファイルと同じディレクトリに移動します。
root権限で、以下のコマンドを実行します。

rpm -ivh oracle-xe-univ-10.2.0.1-1.0.i386.rpm

ディストリビューションによっては「su」コマンドでroot権限を得ることが禁じられているものもあります。その場合は、「sudo」に続けてコマンドを打つと、rootパスワードが求められ、入力してやると実行がなされます。

このコマンドを打つとエラーメッセージが出されるかもしれません。「stat /home/...../.gvfsに失敗しました:許可がありません」というものです。これはGnomeデスクトップ環境の既知のバグですが、放っておけばインストールが始まります。以下のようなメッセージが出ればインストール完了と考えてよいでしょう。

You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.



OpenSUSE11.0で「rpm」型ファイルからのインストール。途中エラーが出るが放っておく

「deb」型ファイルからのインストール

同様に、以下のコマンドでインストールできます。

dpkg -i oracle-xe-universal_10.2.0.1-1.0_i386.deb

でもUbuntuなどは、「deb」形式のファイルアイコンを右クリックして、付属のパッケージインストーラでGUI的にインストールするという方法もあります。



Ubuntuでは「deb」型ファイルを右クリックして「GDebi Packageインストーラ」を起動してもよい



実行する様子を見ることもできる

データベースの設定

インストールしてしまえばどちらでも同じです。root権限で、以下のコマンドを打ちます。

/etc/init.d/oracle-xe configure

ただし、本当にそんな場所に「oracle-xe」という「スクリプトファイル」があるか、確認はしておきましょう。
ちゃんと目的の「スクリプトファイル」が起動できたら、アプリケーションのポート番号が聞かれたり(すべてデフォルトで良し)、SYSTEMユーザのパスワードの設定を求められたりします。



SYSTEMユーザのパスワード設定を求められているところ

パスワードの設定が終わると、以下のように聞かれます。

Do you want Oracle Database 10g Express Edition to be sarted on boot(y/n)
これは、XEを自動起動・終了するかどうか聞いているのです。「Linuxにはあまり詳しくないが、XEの勉強を集中してやりたいので、起動のためにいろいろ悩んだりしたくない」という場合は「y」にしてしまいましょう。Linuxで他のことがやりたくなったら、またOSからインストールし直せばいいじゃないですか。

最後に以下のようなメッセージが出れば、あとはWindowsと全く同様に、XEを使うことができます。

Installation Completed Successfully.



OpenSUSEでもWindowsと同じようなメニューが