PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

JDBC-KOPIE mit Ameise

PgJDBC unterstützt COPY nicht direkt, sondern über den CopyManager API erhalten Sie von der PGConnection Schnittstelle der java.sql.Connection von PgJDBC zurückgegeben.

Leider können Sie das nicht aus einer einfachen SQL-Datei verwenden, in der Sie COPY mischen Operationen in mit anderen Befehlen.

Ich persönlich würde psql berappen um .sql auszuführen Dateien mit Ant <exec> Aufgabe. Auf diese Weise können Sie COPY einfügen Daten inline in Ihren SQL-Dateien.

Es wäre schön, PgJDBC zu ermöglichen, COPY zu handhaben , aber es ist nicht einfach. Es ist praktisch ein anderer Protokollmodus in PostgreSQL, und es macht nicht viel Sinn, die üblichen JDBC-Schnittstellen mit vorbereiteten Anweisungen, Ausführen usw. dafür zu verwenden. Wir könnten ein execSQLScript bereitstellen auf der benutzerdefinierten PGconnection aber das würde Ihnen nicht viel helfen, weil Dinge wie Ants <sql> Aufgabe würde es nicht verwenden. Sie müssten eine benutzerdefinierte Aufgabe schreiben.

Stattdessen müsste PgJDBC die Clients ziemlich anlügen - wenn es COPY eingibt Modus nach einem COPY Befehl, müsste es die JDBC-Spezifikation ignorieren und nicht wirklich das tun, was es als Reaktion auf die Ausführung von JDBC-Anweisungen tun sollte. Dies würde wahrscheinlich alle möglichen Dinge kaputt machen.

Also - im Moment ist es bei weitem die einfachste Option, einfach psql auszuführen Befehl zu tun, was Sie wollen.