![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
Berkeley DB 1.85 (x86 native-endian) ファイル hoge.db -> GNU dbm ファイル hoge.gdb への変換を行うツールはありますでしょうか。
借りていたサーバで動かしていた掲示板に Ruby で書かれた CGI RuBBS を使っていま{した,す}。
# 配布元
# http://www.spc.gr.jp/bbs/RuBBS.html
# 現在、アーカイブから配布とのこと
ハードウェア故障に伴い環境移行しようとしたのですが、RuBBS のデータベース管理ルーチンは変わっていないものの、OpenBSD で動いていた Ruby ランタイムが Berkeley DB 1.85 を使っていた(とりあえず file コマンドはそう告げています)らしく、Debian Linux 上で動かすと過去記事が読めません。
libdb.a のインストールからスタート、は避けたいです。何とかしてツールによる形式の変換で免れたいと願っています。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_10.png?5a7ff87)
No.1ベストアンサー
- 回答日時:
たぶん、存在しないです。
ぜんぜん難しいものじゃないので、探すより作った方が早いと思います。
#!/usr/bin/perl
tie %db_in, 'DB_File' , $dbname_in, O_RDONLY, 0644 or die;
tie %db_out, 'GDBM_File', $dbname_out, O_RDWR|O_CREAT, 0644 or die;
$db_out{$k} = $v while ($k,$v) = each %db_in ;
untie %db_in;
untie %db_out;
ほら、探すより早い。。
(試してないので、エラー出るかもです)
この回答への補足
返答ありがとうございます。
試してみましたが Berkeley DB を読ませることに失敗しています。
hoge.db がこわれているか、それとも、にわか勉強で分かっていないのですが Berkeley DB は上位互換性はないのでしょうか。
file type に $DB_HASH か $DB_BTREE を指定すると die してしまいます。$DB_RECNO では読めたとはいえませんし(配列に入れると末尾の要素に全データが入っているようです)。
システム環境: Debian Linux テスト版
# 間借サーバなので私の都合で変えられません。ごめんなさい
Perl ランタイム: 5.8.4 (apt-get で取得)
Ruby ランタイム: 1.8.2 (apt-get で取得)
Debian Linux テスト版で apt-get でライブラリを取得すると libdb2, 3, 4.1, 4.2 はありますが libdb.{a,so} は libc5 向けしかないようです。
Berkeley DB 1.85 が現在の Perl, Ruby ランタイムで読めないとなると、まず libdb.{a, so} をインストールして、Perl, Ruby 向けサードパーティモジュールかランタイム全体をビルドし直して、それから変換スクリプトを走らせて、という手順になりそうです。それが嫌です。
使っている Perl, Ruby ランタイムが Berkeley DB のどのバージョンに対応しているのか、そこの確認からスタートのようです。
回答ありがとうございます。返答が二ヶ月遅れですみません。
結局、解決できずあきらめました。VMware Workstation 4.5.2 上のゲスト OS として SuSE Linux 9.2 をインストールした環境で変換しようとしたものの、最初の tie が die してしまいました。
ファイルが壊れているのか、環境に不備があるのか、解決するためには切り分けが必要ですが、私の技術・資源ではこれ以上の追求ができませんでした。
解決できませんでしたが、ここで締め切ることにします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- その他(ソフトウェア) Emacsメニューの日本語化について 1 2023/06/16 15:52
- 情報処理技術者・Microsoft認定資格 応用情報処理技術者試験のシステム利用率の計算について 2 2022/03/28 07:43
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- Excel(エクセル) アウトラインの小計のやり方 1 2023/03/20 11:51
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
希望の位置へフィールドを追加...
-
型 varchar から型 numeric へ...
-
ODBC経由の処理が遅い
-
データベースの2GBって・・・?
-
CDの売上枚数を知りたいのですが
-
バッファプールって?
-
データベースの最適化をマクロ...
-
DB2 UDBって?
-
オラクルのLONG RAW型のテーブ...
-
SQL Server にファイルを登録、...
-
私があるアカウント発行の権利...
-
エクセルのフォームについて(...
-
AccessとSQL Serverの違い
-
ロータスアプローチのリスト表...
-
データベースのウェブでの自作
-
異なるOracleサーバ上のテーブ...
-
ACCESSで条件付き書式の設定方法
-
今年亡くなった有名人を一発で...
-
Notes って 何が良くて使うの...
-
DB2にはRIGHT関数がないの?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FindFirst複数条件
-
希望の位置へフィールドを追加...
-
[ACCESS/VBA]動的にSQL文を...
-
エクセルからアクセスにADO...
-
列名が無効です
-
データベースの変換
-
Access 余分な件数分データ削除...
-
Access2000のVBAでコンパイルエ...
-
パススルークエリの使い方について
-
多値従属
-
Microsoft Accessパスワード忘...
-
accessのvbaでの実行時エラーに...
-
sqlite3の動作が?xamppでは問...
-
Berkeley DB 1.85 -> GNU dbm ...
-
コンピュータ用語、データベー...
-
型 varchar から型 numeric へ...
-
データベースの最適化をマクロ...
-
汎用カード型のデータベースソ...
-
キャッシュとバッファの違いは?
-
リスト形式の表とデータベース...
おすすめ情報