linux-l: dbm

Andreas Burkhardt andreaz at trans-secure.com
Do Mär 16 15:31:24 CET 2000


Jens Dreger wrote:

> 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";

Habe ich mal geändert in:
tie %db,  'DB_File', "$ARGV[ 0 ].db", O_RDWR, 0640, $DB_HASH;

>
> tie %gdbm,'GDBM_File', "gdbm.dat", &GDBM_WRCREAT, 0640;
>
> foreach $key (keys %db) { $gdbm{$key} = $db{$key}; }

Habe mal ein   print"$key";   addiert, aber das gibt *nichts* aus

>
>
> untie %db;
> untie %gdbm;
> ------------8<------------
>
> Keine Ahnung, ob das geht. Hab's nur kurz an einer "sythetischen"
> Datenbank getestet...
>
> Gruss,
>
> Jens.

trying on



Mehr Informationen über die Mailingliste linux-l