PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

COPIE JDBC avec fourmi

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.