PgJDBC understøtter ikke COPY
direkte, men det gør det via CopyManager
API kan du få fra PGConnection
grænsefladen til java.sql.Connection
returneret af PgJDBC.
Desværre kan du ikke bruge det fra en almindelig SQL-fil, hvor du blander COPY
operationer med andre kommandoer.
Personligt ville jeg betale til psql
for at køre .sql
filer ved hjælp af Ant <exec>
opgave. På den måde kan du inkludere COPY
data in-line i dine SQL-filer.
Det ville være rart at aktivere PgJDBC til at håndtere COPY
, men det er ikke let. Det er faktisk en anden protokoltilstand i PostgreSQL, og det giver ikke meget mening at bruge de sædvanlige JDBC-grænseflader med forberedte sætninger, eksekvere osv. til det. Vi kunne levere et execSQLScript
på den tilpassede PGconnection
men det ville ikke hjælpe dig meget, fordi ting som Ants <sql>
opgave ville ikke bruge det. Du skal skrive en tilpasset opgave.
I stedet skulle PgJDBC stort set lyve over for klienter - når den indtastede COPY
tilstand efter en COPY
kommando, skulle den ignorere JDBC-specifikationen og ikke rigtig gøre, hvad den skulle som svar på, at JDBC-sætningen udføres. Dette ville sandsynligvis ødelægge alle mulige ting.
Så - indtil videre er langt den nemmeste mulighed bare at udføre psql
kommando til at gøre, hvad du vil.