Using PHP 4.3.7 and PGSQL 7.4.3, I am trying to structure data and use
COPY to import into a table using PHP. If I run my script, I receive
this error:
Warning: pg_end_copy(): Query failed: in
/home/sites/site9/web/importxrf.php on line 100
I view source of the page where I have echo'd the copy data and paste it
into my psql prompt and it copies into the table fine. Can anyone see
any obvious problems with my script?
$connOHC = "dbname=ohc user=xxxx password=xxxxx host=example.com";
$dbh = pg_connect($connOHC);
if ($dbh) {echo "Connection to database established...<br>";}
$stat = pg_exec($dbh, "SELECT MAX(public.tblxrf.xrf_id) AS units_max_id
FROM public.tblxrf");
if ($stat) {
$data = pg_fetch_row($stat,0);
$next_id = $data[0]+1;
} else {
$next_id = 1;
}
echo "Starting process...<br>";
echo "Begin: ".date('Y-m-d H:i:s')."<br>\n";
$result = pg_exec($dbh, "COPY tblxrf FROM stdin");
$handle = fopen("xrf/".$recNo."__xln", "r") or die("Can't open file");
$lineno = 0;
$success = true;
while ($csv_line = fgetcsv($handle,1024)) {
$lineno++;
chop($csv_line);
switch ($lineno) {
case (($lineno > 2) && ($lineno < 6)):
break;
case 8:
break;
case 1:
if (!preg_match("/^Serial/",$csv_line[0])) {
echo "Not a valid XRF file, no Serial number
found\n";
$success = false;
break 2;
} else { $serialno = $csv_line[0]; };
break;
case 2:
if (!preg_match("/^PAINT/",$csv_line[0])) {
echo "Not a valid XRF paint file, PAINT not
found\n";
$success = false;
break 2;
}
break;
break 2;
case ($lineno >= 10):
$copydata = $next_id.",";
for ($i = 0, $j = count($csv_line); $i < $j; $i++) {
$trimdata = trim($csv_line[$i]);
if ($i <= 25) {
if (($trimdata == "") || ($trimdata ==
"NA")) {
switch ($i) {
case 25:
$copydata .= "\\N";
break;
default:
$copydata .= "\\N,";
break;
}
} elseif ($trimdata == ">>5.0") {
$copydata .= "\\N,";
} else {
$copydata .= $trimdata.",";
}
}
}
$copydata .= "\n";
$stat = pg_put_line($dbh, $copydata);
if (!$stat) {
echo "An error has occured<br>\n";
exit;
}
echo $copydata;
$next_id++;
break;
} // end switch
} // end while
pg_put_line($dbh, "\\.\n");
pg_end_copy($dbh);
echo "End: ".date('Y-m-d H:i:s')."<br>\n";
pg_close($dbh);
echo "ending process...<br>\n";
fclose($handle);
--
Robert
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php