pg_put_line() Frustration
pg_put_line() Frustration
am 20.06.2005 15:29:47 von Simon Hewitt
Hi all,
I am currently working on an application that will input multple lines into
a Postgre database. I am using the following code
$sql = "COPY table_2 FROM STDIN DELIMITER AS '\t'";
pg_query($dbc, $sql);
$sql = $data1."\t".$data2."\t".implode("\t",
$data)."\ttrue\t05-05-2005\n";
pg_put_line($this->dbc, $sql);
if(!pg_put_line($dbc, "\\N"))
{
pg_end_copy($dbc);
$error_message('Could not enter details');
}
else
{
pg_end_copy($this->dbc);
unset($data);
}
This gives me an example line like
57 BELF 254 0 10877 5138 0 0 true 05-05-2005
To go into a table with fields INT, CHAR(4) INT, INT, INT, INT, INT, INT,
BOOL, DATE
However, its not going in...
I'm getting an error
ERROR: missing data for column "col2"
With no data being inserted.
If anyone could point out where I'm going wrong I'd be forever in their debt
Thanks
Simon
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?
http://archives.postgresql.org
Re: pg_put_line() Frustration
am 20.06.2005 16:05:31 von Michael Fuhr
On Mon, Jun 20, 2005 at 01:29:47PM +0000, Simon Hewitt wrote:
>
> I am currently working on an application that will input multple lines into
> a Postgre database. I am using the following code
It's PostgreSQL or Postgres, not Postgre.
> $sql = "COPY table_2 FROM STDIN DELIMITER AS '\t'";
> pg_query($dbc, $sql);
> $sql = $data1."\t".$data2."\t".implode("\t",
> $data)."\ttrue\t05-05-2005\n";
> pg_put_line($this->dbc, $sql);
> if(!pg_put_line($dbc, "\\N"))
The last line above attempts to add a row with a single NULL value,
so you get an error about missing data for the other columns. What's
the purpose of that line? Why do you sometimes use $dbc and sometimes
$this->dbc? Do they refer to the same connection or to different
connections?
--
Michael Fuhr
http://www.fuhr.org/~mfuhr/
---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly
Re: pg_put_line() Frustration
am 20.06.2005 16:36:00 von Christopher Kings-Lynne
Use pg_copy_to and pg_copy_from instead...
Chris
Simon Hewitt wrote:
> Hi all,
>
> I am currently working on an application that will input multple lines
> into a Postgre database. I am using the following code
>
> $sql = "COPY table_2 FROM STDIN DELIMITER AS '\t'";
> pg_query($dbc, $sql);
> $sql = $data1."\t".$data2."\t".implode("\t",
> $data)."\ttrue\t05-05-2005\n";
> pg_put_line($this->dbc, $sql);
> if(!pg_put_line($dbc, "\\N"))
> {
> pg_end_copy($dbc);
> $error_message('Could not enter details');
> }
> else
> {
> pg_end_copy($this->dbc);
> unset($data);
> }
>
> This gives me an example line like
>
> 57 BELF 254 0 10877 5138 0 0 true 05-05-2005
>
> To go into a table with fields INT, CHAR(4) INT, INT, INT, INT, INT,
> INT, BOOL, DATE
>
> However, its not going in...
>
> I'm getting an error
>
> ERROR: missing data for column "col2"
>
> With no data being inserted.
>
> If anyone could point out where I'm going wrong I'd be forever in their
> debt
>
> Thanks
>
> Simon
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?
http://archives.postgresql.org