PgJDBC не поддържа COPY
директно, но го прави чрез CopyManager
API, който можете да получите от PGConnection
интерфейс на java.sql.Connection
върнат от PgJDBC.
За съжаление, не можете да използвате това от обикновен SQL файл, където смесвате COPY
операции с други команди.
Лично аз бих дал пари за psql
за да стартирате .sql
файлове с помощта на Ant <exec>
задача. По този начин можете да включите COPY
данни на линия във вашите SQL файлове.
Би било хубаво да разрешите на PgJDBC да обработва COPY
, но не е лесно. Това е ефективно различен режим на протокол в PostgreSQL и няма много смисъл да се използват обичайните JDBC интерфейси с подготвени оператори, изпълнение и т.н. за него. Можем да предоставим execSQLScript
на персонализираната PGconnection
но това няма да ви помогне много, защото неща като <sql>
на Ant задача няма да го използва. Ще трябва да напишете персонализирана задача.
Вместо това PgJDBC ще трябва доста да лъже клиентите - когато въведе COPY
режим след COPY
команда, ще трябва да игнорира спецификацията на JDBC и наистина да не прави това, което трябваше да направи в отговор на изпълнението на израз на JDBC. Това вероятно ще повреди всякакви неща.
Така че - засега най-лесният вариант е просто да изпълните psql
команда, за да направите това, което искате.