PgJDBC ne prend pas en charge COPY
directement, mais via le CopyManager
API que vous pouvez obtenir à partir de PGConnection
interface de java.sql.Connection
renvoyé par PgJDBC.
Malheureusement, vous ne pouvez pas l'utiliser à partir d'un fichier SQL simple où vous mélangez COPY
opérations avec d'autres commandes.
Personnellement, je débourserais pour psql
pour exécuter .sql
fichiers à l'aide de l'Ant <exec>
tâche. De cette façon, vous pouvez inclure COPY
données en ligne dans vos fichiers SQL.
Ce serait bien de permettre à PgJDBC de gérer COPY
, mais ce n'est pas facile. C'est effectivement un mode de protocole différent dans PostgreSQL, et cela n'a pas beaucoup de sens d'utiliser les interfaces JDBC habituelles avec des instructions préparées, exécuter, etc., pour cela. Nous pourrions fournir un execSQLScript
sur la PGconnection
personnalisée mais cela ne vous aiderait pas beaucoup parce que des choses comme Ant's <sql>
la tâche ne l'utiliserait pas. Vous devrez écrire une tâche personnalisée.
Au lieu de cela, PgJDBC devrait à peu près mentir aux clients - lorsqu'il entrerait COPY
mode après un COPY
commande, il devrait ignorer la spécification JDBC et ne pas vraiment faire ce qu'il était censé faire en réponse à l'exécution de l'instruction JDBC. Cela risquerait de casser toutes sortes de choses.
Donc - pour l'instant, l'option la plus simple est de loin d'exécuter simplement le psql
commande pour faire ce que vous voulez.