如何使用JDBC将数据从文件复制到PostgreSQL?

我想使用JDBC将数据从文件复制到PostgreSQL DB。 我正在使用JDBC语句对象将文件复制到DB中。 这很慢。

我才知道我们也可以使用copy out命令将文件复制到DB。 但是,我如何处理JDBC。 即使是在JDBC中具有复制示例的良好参考资料也会有所帮助。

PS:提前谢谢

这有效……

import java.io.FileReader; import java.sql.Connection; import java.sql.DriverManager; import org.postgresql.copy.CopyManager; import org.postgresql.core.BaseConnection; public class PgSqlJdbcCopyStreamsExample { public static void main(String[] args) throws Exception { if(args.length!=4) { System.out.println("Please specify database URL, user, password and file on the command line."); System.out.println("Like this: jdbc:postgresql://localhost:5432/test test password file"); } else { System.err.println("Loading driver"); Class.forName("org.postgresql.Driver"); System.err.println("Connecting to " + args[0]); Connection con = DriverManager.getConnection(args[0],args[1],args[2]); System.err.println("Copying text data rows from stdin"); CopyManager copyManager = new CopyManager((BaseConnection) con); FileReader fileReader = new FileReader(args[3]); copyManager.copyIn("COPY t FROM STDIN", fileReader ); System.err.println("Done."); } } } 

(根据aliasmrchips的回答:)如果你有一个Groovy环境 (比如我在ANT中使用它),你可以这样做(用Postgres替换Oracle细节):

 // exec.groovy this.class.classLoader.rootLoader.addURL('${postgres-jdbc-driver-path}') PgScript.load() // PgScript.groovy // (we cannot use the org.postgres.* classes in exec.groovy already!) import java.io.FileReader import java.sql.DriverManager import org.postgresql.copy.CopyManager import org.postgresql.core.BaseConnection class PgScript { public static void load() { new CopyManager( (BaseConnection) DriverManager.getConnection( '${jdbc-db-url}', '${db-usr}', '${db-usr-pass}' ) ).copyIn( 'COPY t FROM STDIN', new FileReader( '${sqlfile}' )) } } 

也基于这篇javaworld.com文章 。