sql >> Databasteknik >  >> RDS >> PostgreSQL

JDBC COPY med ant

PgJDBC stöder inte COPY direkt, men det gör det via CopyManager API kan du få från PGConnection gränssnittet för java.sql.Connection returneras av PgJDBC.

Tyvärr kan du inte använda det från en vanlig SQL-fil där du blandar COPY operationer med andra kommandon.

Personligen skulle jag betala till psql för att köra .sql filer med Ant <exec> uppgift. På så sätt kan du inkludera COPY data in-line i dina SQL-filer.

Det skulle vara trevligt att aktivera PgJDBC att hantera COPY , men det är inte lätt. Det är faktiskt ett annat protokollläge i PostgreSQL, och det är inte mycket meningsfullt att använda de vanliga JDBC-gränssnitten med förberedda uttalanden, köra, etc, för det. Vi skulle kunna tillhandahålla ett execSQLScript på den anpassade PGconnection men det skulle inte hjälpa dig mycket eftersom saker som Ants <sql> uppgiften skulle inte använda den. Du måste skriva en anpassad uppgift.

Istället skulle PgJDBC i stort sett behöva ljuga för klienter - när den skrev in COPY läge efter en COPY kommandot måste den ignorera JDBC-specifikationen och inte riktigt göra vad den var tänkt att som svar på att JDBC-satsen körs. Detta skulle sannolikt bryta alla möjliga saker.

Så - för nu är det överlägset enklaste alternativet att bara köra psql kommandot för att göra vad du vill.




  1. apache mysql - paket ur funktion på 3306

  2. #1064 - Du har ett fel i din SQL-syntax; kontrollera manualen som motsvarar din MySQL-serverversion

  3. Använda flera fönsterfunktioner på samma partition

  4. IF-villkor i mysql-skript