• 締切済み

CGIのdbmopenについて

こんにちは。 質問させていただきます。 perlでプロバイダ側の設定(?)でDBが使えません。 ほんとは下記のように書きたいのですがDBが使えないので困っています。 こういう場合エクセルやCSVでもいいので開くようにしたいのですが変わりにどういう風に書いたらいいのでしょうか? よろしくお願いします。 dbmopen(%DB, $dbfile, 0600) or exitError("データベース $dbfile がオープンできません。");

みんなの回答

  • Dpop
  • ベストアンサー率51% (279/544)
回答No.3

Oracleの環境を構築する。と言うことは、専用サーバーをご利用なのでしょうか? 少なくても、MLDBMは外部プログラムを利用しない、PurePerlのモジュールなので、管理者に依頼せずとも、ご自分のホームにmldbm.pmを導入して頂くだけでも利用できますよ。 試してみてはいかがでしょうか。

  • Dpop
  • ベストアンサー率51% (279/544)
回答No.2

いくつか誤解がある様な気がします。 dbmopenはPerl4時代の文法で、互換性のために残っているものです。 プロバイダによっては、使用できない様に設定しているところもあるのかも知れません。(その、意図は分かりませんが。) dbmopenで利用するDBMとは、バークレーDB(や、その仲間。)のことです。 バークレーDBを利用したいなら、dbmopenの変わりにtieを利用すれば良いでしょう。ただし、プロバイダによって、利用できるDBMが異なるハズです。適当なハッシュ変数とDBMをtieで結びつければ、DBMは利用できます。 この説明が理解できない場合には、バークレーDBについて、少し調べて見ると良いですよ。 MLDBMの公式ドキュメントの日本語版が http://perldoc.jp/docs/modules/MLDBM-2.01/MLDBM.pod にあります。参考になると思います。 主要なDBMについては、らくだ本や、Perlクックブックと言う本を見れば解説されています。 次に、エクセルはデータベースではありません。スプレットシートです。 Excelのスプレットシートを開くためのモジュールも、探せばあるとは思いますが、Win32環境専用ではないかな? と思います。 通常、プロバイダの環境はUNIXかLinuxでしょうから、見つけたとしても利用できないのでは無いかな。と思います。 次に、CSVですが、CSVはただのテキストファイルです。 open(CSV, $csvfile); while(<CSV>) { 処理 } close(CSV); で読めます。CSVのカラム分割については、 Perlメモ http://www.din.or.jp/~ohzaki/perl.htmhttp://www.din.or.jp/~ohzaki/perl.htm#CSV2Values を読めば分かると思います。 ちなみに、RDB(リレーショナルデータベース)は、Oracle や MySQL, PostgreSQLなどがインストールされている環境で無いと利用できません。(MySQL, PostgreSQL はフリーソフトなので、インストールされているプロバイダはあると思います。) DBD::なんとか と言うパッケージについて調べるといろいろな事が分かりますよ。(たとえば、DBD::mysql とか)

jun2249
質問者

補足

こんにちは。 回答ありがとうございます。 DBM(バークレーDB)を使いたかったのですが、DBD・DBIモジュール以外は入っていないため使えないそうなのです。また、DBはOracle以外は推奨してないらしいです。 ただ、Oracleも使うとなると環境を構築しなければならないためこれも無理っぽいです。

noname#25358
noname#25358
回答No.1

 プロバイダがDBを禁止しているのであれば、データベースは使えません。  これはプロバイダを乗り換えない限りどうしようもないです(^_^;  CSVファイルでいいのであれば、これをテキストファイルとして開いて処理を行うか、フリーソフトで、CSVファイルにSQLコマンドを発行するモジュールがあるにはありますよ。

jun2249
質問者

補足

回答ありがとうございます。 >CSVファイルでいいのであれば、これをテキストファイルとして開いて処理を行うか、フリーソフトで、CSVファイルにSQLコマンドを発行するモジュールがあるにはありますよ。 上記ってどうすればできますか? 普通にopenでCSVファイル名を指定すればいいんでしょうか?

関連するQ&A

専門家に質問してみよう