http://www.postgresql-support.de

COPY verwenden

Wollen Sie mit PHP Daten importieren, so gibt es die Möglichkeit, den COPY-Befehl zu integrieren. Dabei ist es notwendig, dem Backend erst mitzuteilen, dass Daten jetzt direkt geschickt werden. Im nächsten Schritt werden Daten empfangen bis dem Backend mitgeteilt wird, dass wir COPY beenden wollen:

<?php
        $cstr = "host=localhost dbname=test user=hs";
        $conn = @pg_connect ($cstr);
        if ($conn)
        {
                @pg_query($conn, "TRUNCATE t_user");
                @pg_query($conn, "COPY t_user FROM stdin");
                @pg_put_line($conn, "1\teg\n");
                @pg_put_line($conn, "2\ths\n");
                @pg_put_line($conn, "\\.\n");
                @pg_end_copy($conn);

                $result = @pg_query("SELECT * FROM t_user");
                if      ($result)
                {
                        echo("<br>");
                        $num = @pg_num_rows($result);

                        for ($i = 0; $i < $num; $i++)
                        {
                                $row = @pg_fetch_array($result, $i,
                                        PGSQL_BOTH);
                                echo "$row[0] ".$row["name"]."<br>";
                        }
                }

                @pg_close( $conn );
        }
        else
        {
                echo ("Datenbankhandle nicht ok!");
        }
?>

Um eine Zeile an das Backend zu schicken, müssen wir in PHP die Funktion pg_put_line aufrufen.

Sind die Daten erst einmal eingelesen, geben wir sie auch gleich wieder aus:

1 eg
2 hs



http://www.postgresql.at