PgJDBC stöder inte COPY
direkt, men det gör det via CopyManager
API kan du få från PGConnection
gränssnittet för java.sql.Connection
returneras av PgJDBC.
Tyvärr kan du inte använda det från en vanlig SQL-fil där du blandar COPY
operationer med andra kommandon.
Personligen skulle jag betala till psql
för att köra .sql
filer med Ant <exec>
uppgift. På så sätt kan du inkludera COPY
data in-line i dina SQL-filer.
Det skulle vara trevligt att aktivera PgJDBC att hantera COPY
, men det är inte lätt. Det är faktiskt ett annat protokollläge i PostgreSQL, och det är inte mycket meningsfullt att använda de vanliga JDBC-gränssnitten med förberedda uttalanden, köra, etc, för det. Vi skulle kunna tillhandahålla ett execSQLScript
på den anpassade PGconnection
men det skulle inte hjälpa dig mycket eftersom saker som Ants <sql>
uppgiften skulle inte använda den. Du måste skriva en anpassad uppgift.
Istället skulle PgJDBC i stort sett behöva ljuga för klienter - när den skrev in COPY
läge efter en COPY
kommandot måste den ignorera JDBC-specifikationen och inte riktigt göra vad den var tänkt att som svar på att JDBC-satsen körs. Detta skulle sannolikt bryta alla möjliga saker.
Så - för nu är det överlägset enklaste alternativet att bara köra psql
kommandot för att göra vad du vill.