From: | Frank Barknecht <barknech(at)ph-cip(dot)uni-koeln(dot)de> |
---|---|
To: | pgsql-sql <pgsql-sql(at)postgreSQL(dot)org> |
Subject: | Re: [SQL] Insert a long text |
Date: | 1999-02-22 11:37:32 |
Message-ID: | 19990222123732.A10469@fliwatut |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Jackson, DeJuan hat gesagt: // Jackson, DeJuan wrote:
> 1) store the text in chunks in the database.
> in other words instead of just using
> CREATE TABLE my_text(message_id INT, data TEXT)
> try
> CREATE TABLE my_text(message_id INT, chunk_id INT, data TEXT);
> then figure out what your insert limit is and break each TEXT
> block into chunks of that size.
To store longer text I am now trying to do it in this way. But first I have
to find out what is the insert limit. For this I wrote a little test script
with perl and DBI which now gives me some strange results.
The script is basically this:
#!/usr/bin/perl -w
use diagnostics;
use DBI;
use strict;
# Konfiguration:
my $dbname="einblick";
my $user="freak";
my $passwd="";
my $tabelle = "my_text";
# For testing inserts I made a rather small long text: ~ 420 bytes
my $text = '
0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9
1 0
# ... and so on until
9 9
1 0 0
1 0 1
1 0 2
1 0 3
1 0 4
1 0 5
1 0 6
1 0 7
1 0 8
1 0 9
';
my $id = 80;
# PG connect
my $dbh = DBI->connect("dbi:Pg:dbname=$dbname", $user, $passwd)
|| die "Can't connect to $dbname: $DBI::errstr";
# SQL-Statement
my $sql = "INSERT INTO $tabelle
( message_id, chunk_id, data) VALUES ( ?, ?, ?)";
my $sth = $dbh->prepare("$sql") || die "Can't prepare statement: $DBI::errstr";
$sth->trace(2, "/tmp/trace_pg");
my $rc = $sth->execute( $id, 0, $text )
|| die "Can't execute statement: $DBI::errstr";
$sth->finish;
$dbh->disconnect;
# END testscript
This runs without problems at first sight but it does NOT insert the whole
text from $text. Instead it cuts it off at around line "9 9"
This seems not to be a problem with the data type anymore because I can
change the entry with pgaccess and make it a longer one. The whole text does
indeed fit into the column but I don't manage to insert it with my script.
I traced the transaction and this shows something like:
/tmp/trace_pg:
dbd_st_execute: statement = >INSERT INTO my_text
( message_id, chunk_id, data) values ( 80, 0, '
0 0
0 1
[... I did shorten the output here!]
9 6
9 7
9 ...')<
<- execute= 1 at /home/freak/bin/langtext.pl line 137.
-> finish for DBD::Pg::st (DBI::st=HASH(0x8209244)~0x81ca35c)
<- finish= 1 at /home/freak/bin/langtext.pl line 139.
-> DESTROY for DBD::Pg::st (DBI::st=HASH(0x81ca35c)~INNER)
dbd_st_destroy
<- DESTROY= undef
Obiously I am still doing something wrong here but I have no idea what
it is. It would be great if someone could help me.
Many thanks in advance,
--
__ __
Frank Barknecht ____ ______ ____ __ trip\ \ / /wire ______
/ __// __ /__/ __// // __ \ \/ / __ \\ ___\
/ / / ____/ / / / // ____// /\ \\ ___\\____ \
/_/ /_____/ /_/ /_//_____// / \ \\_____\\_____\
/_/ \_\
From | Date | Subject | |
---|---|---|---|
Next Message | jose' soares | 1999-02-22 13:23:33 | Re: [SQL] SQL-Query 2 get primary key |
Previous Message | Remigiusz Sokolowski | 1999-02-22 10:02:11 | Groups |