かなりの初心者です。
まず、SQLiteですが、SQLite入門という本から「sqlite-3_2_2.zip」というのを
手に入れました。
モジュールも以下のものを準備しました。(ある事情で、モジュールはインストール
して使用することは出来ません。)モジュールを自作のPerlプログラムがあるフォルダに
置いて、
use DBD::SQLite;
と宣言して利用できないのでしょうか?
あと、「sqlite-3_2_2.zip」を解凍すると「sqlite3.exe」というファイルが出てきましたが、
これはどこに置けばいいのでしょうか?
よろしくお願いします。
Windows XP SP2
Perl ver 5.8.8
Apache HTTP Server 2.2.3
DBD-SQLite Version: 1.13
sqlite3.exeを使ったコマンドラインの操作を行いたいのでなければ、sqlite3.exeをどこにも置かなくても全く問題ありません。
「SQLite入門」をお持ちであれば、023ページの内容を一度じっくり読んでみてください。
SQLiteはデータベースサーバーがないので、SQLiteには、いわゆるデータベースサーバーの「インストール」という作業が必要ありません。
また、DBD::SQLiteはDBI Driverです。
使い方はCPANのDBD::SQLiteにも載っているように以下のようにします。
use DBI; my $dbh = DBI->connect("dbi:SQLite:dbname=dbfile","","");
参考になれば幸いです。
[参考URL]
>まず、SQLiteですが、SQLite入門という本から「sqlite-3_2_2.zip」というのを
> 手に入れました。
PerlでSQLiteを扱うのにこれは不要です。
(というかあっても意味をなさない)
DBD::SQLiteがあればよいです。
しかし、通常
use DBD::SQLite;
とするのではなくDBIから使いますので、
use DBI;
my $dbh = DBI->connect("dbi:SQLite:dbname=dbfile","","");
な風につかいます。
初歩的な質問をしてすいません。
コンパイルしてインストールしなければ、SQLiteは使うことが出来ないのですね。
すいません書き忘れです。
> ある事情で、モジュールはインストールして使用することは出来ません。
> モジュールを自作のPerlプログラムがあるフォルダに置いて、
とありますが、置くだけでは使えません。
DBD::SQLiteはコンパイルが必要になりますので素直にVC等でコンパイル(makeまたはnmake)してインストールしてください。
または、ActivePerlを使われているのならppmを使ってインストールでもいいでしょう。(ppmなら既にコンパイルされていますからVCなどのコンパイル環境は不要です)
実は、ppm等を使ってインストールは、どうしても出来ないのです。
CGIプログラムがおいてあるフォルダを、そのまま置いて利用するしかできないので、非常に困っているところです。
SQLite は組み込み型 DB なので、Perl から使いたいのであれば、DBD::SQLite だけで使用可能で、sqlite3.exe は不要です。(sqlite3.exe はコマンドプロンプトから CUI で SQLite を操作するためのコンソールアプリケーションです)
また、DBD::SQLite は XS を使用したモジュールなので、インストール作業無しには利用できません。
root でなくても、一般ユーザ権限でも良いので、(さくらインターネットでCPANを利用する (おぼへがき)参照) シェルアクセスを許可されたサーバでインストールを行ってください。
ところで、前提の環境に Windows と書かれていますが、Windows 環境で DBD::SQLite を使いたいということでしょうか? それであれば、ActivePerl の ppm から一発でインストールすることができるのですが、それはやはりダメなのでしょうか?
ありがとうございました。
「DBD::SQLite は XS を使用したモジュールなので、インストール作業無しには利用できません。」
とありますが、インストール作業無しでSQLiteを利用することは不可能なのでしょうか?
とすると、大量のデータを扱いたい場合など、他に方法はあるのでしょうか?
インストールできればいいのですが、どうしてもそれは無理でした。
CGIが入っているフォルダを置く事しかできないのです。
> インストールできればいいのですが、どうしてもそれは無理でした。
環境(サーバー)がWindowsXPということはレンタルサーバーの類ではなく自前のものだと思うのですがなぜppmを利用するわけにはいかないのでしょうか?
もし、どうしてもというのなら最後の手段としてコンパイルだけしてインストール直前のものを置いて使うという方法があります。
コンパイル環境(注意:サーバーと同じOSかつ同じPerlのメジャーバージョンである必要ある)があるならCPANから持ってきたDBD::SQLiteを利用して、ないならPPMのActiveStateのリポジトリ(http://downloads.activestate.com/ActivePerl/Windows/5.8/)から持ってきたものを利用してください。
ただ、置くときは本来インストールした時と同じディレクトリ構成にしないといけませんのでご注意ください。
その後は↓を参考にパスを通してください。
http://hail2u.net/blog/coding/push_at_inc_and_use_lib.html
または
はい、自分もインストールできれば、購入した本をそのまま参考にできますし、非常に楽なのです。
しかし、使用する方々のスキルや状況などを考えると不可能に近いのです。自分が一台一台すべてに入れて回ることも、出来ない状態なのです。
ですから、プログラムの入ったフォルダを送るしか手だてがありません。
参考にさせていただきます!
> とありますが、インストール作業無しでSQLiteを利用することは不可能なのでしょうか?
はい、不可能です。
> とすると、大量のデータを扱いたい場合など、他に方法はあるのでしょうか?
http://q.hatena.ne.jp/1172822658#a687992
こちらの質問に似た内容がありますが、Perl 標準の DBM を使うという方法があります。
SQLite と違い、SQL での柔軟な問い合わせはできませんが、Movable Type 等も同種の DB_File DB で動作していますので、使い方次第で大量データをうまく処理することはできるはずです。
ありがとうございました!
DBMの利用を考えてみます。
ご回答ありがとうございました。
sqlite3.exeというのは、コマンドラインを実行するプログラムなのですね。という事は、SQLiteのライブラリは、どこにあるのでしょうか?