PgJDBC tidak mendukung COPY
langsung, tetapi dilakukan melalui CopyManager
API yang bisa Anda dapatkan dari PGConnection
antarmuka java.sql.Connection
dikembalikan oleh PgJDBC.
Sayangnya, Anda tidak dapat menggunakannya dari file SQL biasa tempat Anda mencampur COPY
operasi dengan perintah lain.
Secara pribadi, saya akan membayar ke psql
untuk menjalankan .sql
file menggunakan Ant <exec>
tugas. Dengan begitu Anda dapat memasukkan COPY
data in-line dalam file SQL Anda.
Akan menyenangkan untuk mengaktifkan PgJDBC untuk menangani COPY
, tapi itu tidak mudah. Ini secara efektif merupakan mode protokol yang berbeda di PostgreSQL, dan tidak masuk akal untuk menggunakan antarmuka JDBC biasa dengan pernyataan yang disiapkan, jalankan, dll, untuk itu. Kami dapat memberikan execSQLScript
pada PGconnection
khusus tapi itu tidak akan banyak membantu Anda karena hal-hal seperti <sql>
. Ant's tugas tidak akan menggunakannya. Anda harus menulis tugas khusus.
Sebagai gantinya, PgJDBC harus berbohong kepada klien - ketika memasukkan COPY
mode setelah COPY
perintah, itu harus mengabaikan spesifikasi JDBC dan tidak benar-benar melakukan apa yang seharusnya sebagai tanggapan terhadap eksekusi pernyataan JDBC. Ini kemungkinan akan merusak banyak hal.
Jadi - untuk saat ini, sejauh ini opsi termudah adalah dengan menjalankan psql
perintah untuk melakukan apa yang Anda inginkan.