linux-l: dbm
Jens Dreger
jens.dreger at physik.fu-berlin.de
Do Mär 16 14:11:21 CET 2000
On Thu, Mar 16, 2000 at 01:13:21PM +0100, Andreas Burkhardt wrote:
> High,
>
>
> also, ich habe hier auf einem alten Rechner ein Perl-Script, das legt
> eine kleine Datenbank an.
>
> accounts.db: Berkeley DB 1.85 Hash/Little Endian (Version 2, Bucket Size
> 4096, Bucket Shift 12, Directory Size 256, Segment Size 256, Segment
> Shift 8, Overflow Point 4, Last Freed 2, Max Bucket 10, High Mask 0xf,
> Low Mask 0x7, Fill Factor 40, Number of Keys -27)
>
>
> Jetzt ist u.a. das Script auf einen neuen Rechner umgezogen und
> 'accounts.db' interessiert gar nicht mehr. Das Script legt einfach zwei
> neue Dateien an.
>
> accounts.dir: GNU dbm 1.x or ndbm database, little endian
> accounts.pag: GNU dbm 1.x or ndbm database, little endian
>
>
> Tja, eine Möglichkeit wäre jetzt, zu Konvertieren; aber wie?
>
>
> Die andere Möglichkeit wäre, das Script auch auf dem neuen Rechner das
> alte Format benutzen zu lassen.
> Ein Ausschnitt aus einer Datei dieses Scripts ist:
>
> $dbtype="dbm";
> $dbpck = 'AnyDBM_File';
> $flags = O_CREAT | O_RDWR;
>
>
> Hier habe ich schon alles mögliche geändert. Entweder das Script
> interessiert das gar nicht oder es verweigert komplett die
> Zusammenarbeit.
>
>
> Was tun?
>
Moin Andreas !
Wie waer's mit db->gdbm umkopieren ?
--------8<---------------
#!/usr/bin/perl -w
# db2gdbm, (c)neulich J.D.
#
use DB_File;
use GDBM_File;
tie %db, 'DB_File', "db.dat";
tie %gdbm,'GDBM_File', "gdbm.dat", &GDBM_WRCREAT, 0640;
foreach $key (keys %db) { $gdbm{$key} = $db{$key}; }
untie %db;
untie %gdbm;
------------8<------------
Keine Ahnung, ob das geht. Hab's nur kurz an einer "sythetischen"
Datenbank getestet...
Gruss,
Jens.
Mehr Informationen über die Mailingliste linux-l