PgJDBC nie obsługuje COPY
bezpośrednio, ale robi to za pomocą CopyManager
API, które możesz uzyskać z PGConnection
interfejs java.sql.Connection
zwrócone przez PgJDBC.
Niestety nie możesz użyć tego ze zwykłego pliku SQL, w którym mieszasz COPY
operacje z innymi poleceniami.
Osobiście wyłożyłbym psql
uruchomić .sql
pliki używające Ant <exec>
zadanie. W ten sposób możesz dołączyć COPY
dane wbudowane w plikach SQL.
Byłoby miło włączyć PgJDBC do obsługi COPY
, ale to nie jest łatwe. W rzeczywistości jest to inny tryb protokołu w PostgreSQL i nie ma większego sensu używanie do tego zwykłych interfejsów JDBC z przygotowanymi instrukcjami, wykonywaniem itp. Możemy dostarczyć execSQLScript
na niestandardowym PGconnection
ale to by ci nie pomogło, ponieważ rzeczy takie jak <sql>
Anta zadanie by go nie użyło. Musisz napisać niestandardowe zadanie.
Zamiast tego, PgJDBC musiałby okłamywać klientów - kiedy wszedł COPY
tryb po COPY
polecenie, musiałby zignorować specyfikację JDBC i tak naprawdę nie robić tego, co powinien w odpowiedzi na wykonanie instrukcji JDBC. Mogłoby to spowodować uszkodzenie wielu rzeczy.
Tak więc - na razie najłatwiejszą opcją jest po prostu wykonanie psql
polecenie, aby robić to, co chcesz.