Toon posts:

[Interbase] exporteren van foto blobs?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Dag mensjes,

Vervelend probleem: ik heb een (grote) interbase 5 database die ik wil omzetten naar mysql, dat lukt redelijk met de tools van interbase zelf (eerst sql dumpen en dan uitvoeren), maar het probleem is dat er foto's als BLOBs in de database staan.

Ik wil de foto's er uit halen en opslaan als losse bestanden.

Met de interbase server manager lukt het om een verbinding op te zetten met de database, het lukt ook programma's als interbase workbench. En met de bijbehorende delphi applicatie kun je de foto's bekijken.

Het lukt niet om via php een directe verbinding te maken (http://www.php.net/manual/tw/ref.ibase.php). Voor perl krijg ik de DBD::Interbase driver niet geinstalleerd op win2k.

Dan maar proberen via ODBC, het verbinden lukt maar bij het uitvoeren van een query krijg ik de volgende error: "invalid statement handle, SQL state 40001 in SQLAllocStmt". Het is gewoon een eenvoudige SELECT * FROM BLA query, kan niet fout zijn. Ik heb het met drie verschillende drivers geprobeerd: intersolv, easysoft en gemini.

Mijn ervaring ligt vooral bij php, perl en Java. Helaas ken ik geen delphi, het zal daarbij wel heel makkelijk zijn.

Iemand ideetjes?

Verwijderd

Voor perl krijg ik de DBD::Interbase driver niet geinstalleerd op win2k.
Waarom krijg je deze niet geinstalleerd?

Ik weet namelijk wel dat er stukken C in zitten die gecompileerd moeten worden. Maar hier http://sourceforge.net/projects/dbi-interbase hebben ze ook de binaries staan voor windows, met voorgebakken dll's. Deze kan je na het downloaden vanaf de command line met de Perl Package Manager installeren.

Verwijderd

Topicstarter
Verwijderd schreef op 06 maart 2003 @ 13:39:
[...]
Waarom krijg je deze niet geinstalleerd?

Ik weet namelijk wel dat er stukken C in zitten die gecompileerd moeten worden. Maar hier http://sourceforge.net/projects/dbi-interbase hebben ze ook de binaries staan voor windows, met voorgebakken dll's. Deze kan je na het downloaden vanaf de command line met de Perl Package Manager installeren.
Met ppm krijg ik de volgende foutmelding:
PPM interactive shell (2.1.6) - type 'help' for available commands.
PPM> install DBD::Interbase
Install package 'DBD-Interbase?' (y/N): y
Installing package 'DBD-Interbase'...
Error installing package 'DBD-Interbase': Read a PPD for 'DBD-Interbase', but it
is not intended for this build of Perl (MSWin32-x86-multi-thread)
PPM>
Zal kijken naar die sf pagina. Moet ik anders zelf gaan compilen met vc++ ofzo? :-/

Verwijderd

Zelf bouwen met nmake (idd ms vc) is volgens mij niet nodig, aangezien de download van sf bij mij vlekkenloos werd geinstalleerd....

[ Voor 6% gewijzigd door Verwijderd op 06-03-2003 14:04 ]


Verwijderd

Topicstarter
Het installeren van DBD::InterBase is gelukt, lijkt het.
Eerst klaagde hij over missende functies in gds32.dll, die heb ik vervangen met een nieuwere in c:\winnt\system32.

Nu krijg ik de volgende error:
code:
1
2
3
4
5
6
7
8
9
C:\Inetpub\wwwroot\animatie\overzetten>perl interbase_fotos.pl
DBI->connect(db:C:\Inetpub\wwwroot\animatie\overzetten\rekplan.gdb) failed: can'
t format message 13:98 -- message file c:\Program Files\Borland\InterBase/interb
ase.msg not found
-Unable to complete network request to host "db".
-Failed to locate host machine.
-The specified name was not found in the hosts file or Domain Name Services.
Can't locate auto/DBI/str_err.al in @INC (@INC contains: C:/Perl/lib C:/Perl/sit
e/lib .) at interbase_fotos.pl line 7


ZUCHT

Ik gebruikt de volgende code om in Perl:
code:
1
2
my $dbname = "C:\\Inetpub\\wwwroot\\animatie\\overzetten\\rekplan.gdb";
my $dbh    = DBI->connect("dbi:InterBase:db:$dbname", 'SYSDBA', 'masterkey') or die "Couldn't connect to database ";


PHP heeft trouwens een access violation windows error en het volgende in tekst:
code:
1
2
3
<b>Warning</b>:  ibase_query(): connection lost to database  in <b>C:\Inetpub\ww
wroot\animatie\overzetten\interbase_fotos.php</b> on line <b>14</b><br />
Kan query niet uitvoeren


PHP code:
code:
1
2
3
    $dtb    = "C:\\Inetpub\\wwwroot\\animatie\\overzetten\\rekplan.gdb";
    $link   = ibase_connect($dtb, 'SYSDBA', 'masterkey') or die("Kan niet verbinden met interbase");
    $result = ibase_query($link, 'SELECT MEDEWERKERID,ROEPNAAM FROM MEDEWERKER') or die("Kan query niet uitvoeren");

Verwijderd

Topicstarter
Ah, het is eindelijk gelukt via Perl & DBD::ODBC en de driver van gemini of easysoft.

Bedankt voor de hulp Lennert, je hebt me toch een beetje bezig gehouden.

Nu zit ik dus met 2315 foto's van recreatiemedewerkers die allemaal bekeken moeten worden ;-)
Pagina: 1