/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
BLOB I PostgreSQL?
Fra : Morten Guldager


Dato : 09-10-02 12:51

Hejsa,

Hvordan laver jeg en blob i PostgreSQL?

Jeg ville gerne undgå at skulle escape binære data.

Jeg havde forestillet mig at bruge DBI med placeholders
til at hælde data ind i databasen.

Jeg har prøvet med text, varchar, og bytea, men den tuder
rammer f.eks. 0x00.

ERROR: Unterminated quoted string


/Morten

 
 
Per Rønne (09-10-2002)
Kommentar
Fra : Per Rønne


Dato : 09-10-02 15:42

Morten Guldager <spamtrap@mogul.dk> wrote:

> Hvordan laver jeg en blob i PostgreSQL?
>
> Jeg ville gerne undgå at skulle escape binære data.
>
> Jeg havde forestillet mig at bruge DBI med placeholders
> til at hælde data ind i databasen.
>
> Jeg har prøvet med text, varchar, og bytea, men den tuder
> rammer f.eks. 0x00.
>
> ERROR: Unterminated quoted string

Måske ville det hjælpe bare lidt hvis du fortalte hvorfra du vil
indsætte i PostgreSQL. Fra et C++ program?
--
Per Erik Rønne

Morten Guldager (09-10-2002)
Kommentar
Fra : Morten Guldager


Dato : 09-10-02 18:57

In article <1fjsjak.1234xpuuakn3kN%serse@diku.dk>, Per Rønne wrote:
> Morten Guldager <spamtrap@mogul.dk> wrote:
>
>> Hvordan laver jeg en blob i PostgreSQL?
>>
>> Jeg ville gerne undgå at skulle escape binære data.
>>
>> Jeg havde forestillet mig at bruge DBI med placeholders
>> til at hælde data ind i databasen.
>>
>> Jeg har prøvet med text, varchar, og bytea, men den tuder
>> rammer f.eks. 0x00.
>>
>> ERROR: Unterminated quoted string
>
> Måske ville det hjælpe bare lidt hvis du fortalte hvorfra du vil
> indsætte i PostgreSQL. Fra et C++ program?

Øh, hov... Den smuttede.

Redhat-7.2, Linux-2.4.9-31smp, Perl-v5.6.1, DBD::Pg


#!/usr/bin/perl -w

use strict;
use DBI;

my $dbh = DBI->connect('DBI:Pg:dbname=x;host=x', 'x', 'x');
die "dumme postgres\n" unless defined $dbh;

$dbh->{AutoCommit} = 0;
$dbh->{pg_auto_escape} = 1;

my $insert_sth = $dbh->prepare(<<SQL);
insert
into x
(a)
values (?)
SQL

my $buffer = pack 'c*', 0..255;
$insert_sth->execute($buffer);
$dbh->commit;
$dbh->disconnect;


/Morten

Thorbjørn Ravn Ander~ (09-10-2002)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 09-10-02 16:50

spamtrap@mogul.dk (Morten Guldager) writes:

> Jeg ville gerne undgå at skulle escape binære data.
>
> Jeg havde forestillet mig at bruge DBI med placeholders
> til at hælde data ind i databasen.

Brug PreparedStatement.
--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Morten Guldager (09-10-2002)
Kommentar
Fra : Morten Guldager


Dato : 09-10-02 19:01

In article <kk8z17obm7.fsf@mimer.null.dk>, Thorbjørn Ravn Andersen wrote:
> spamtrap@mogul.dk (Morten Guldager) writes:
>
>> Jeg ville gerne undgå at skulle escape binære data.
>>
>> Jeg havde forestillet mig at bruge DBI med placeholders
>> til at hælde data ind i databasen.
>
> Brug PreparedStatement.

Hmm, det synes jeg allerede at jeg gør. Eller mener du noget helt andet
med PreparedStatement?

Min tabel ser iøvrigt sådan her ud:

Table "x"
Column | Type | Modifiers
--------+------+-----------
a | text | not null

Og programmet sådan her:

#!/usr/bin/perl -w

use strict;
use DBI;

my $dbh = DBI->connect('DBI:Pg:dbname=x;host=x', 'x', 'x');
die "dumme postgres\n" unless defined $dbh;

$dbh->{AutoCommit} = 0;
$dbh->{pg_auto_escape} = 1;

my $insert_sth = $dbh->prepare(<<SQL);
insert
into x
(a)
values (?)
SQL

my $buffer = pack 'c*', 0..255;
$insert_sth->execute($buffer);
$dbh->commit;
$dbh->disconnect;


Et andet sted i tråden blev der påpeget at jeg havde glemt at specificere
mit setup:
- 2 linux maskiner, en rdbms og en klient.
- postgres 7.2.2
- klienten bruger perl og DBD:Pg


/Morten

Søg
Reklame
Statistik
Spørgsmål : 177517
Tips : 31968
Nyheder : 719565
Indlæg : 6408636
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste