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

Manière correcte d'utiliser la copie Postgres jdbc

Cela fonctionne pour moi :

try (Connection conn = DriverManager.getConnection(connUrl, myUid, myPwd)) {
    long rowsInserted = new CopyManager((BaseConnection) conn)
            .copyIn(
                "COPY table1 FROM STDIN (FORMAT csv, HEADER)", 
                new BufferedReader(new FileReader("C:/Users/gord/Desktop/testdata.csv"))
                );
    System.out.printf("%d row(s) inserted%n", rowsInserted);
}

Utilisation de copyIn(String sql, Reader from) a l'avantage d'éviter les problèmes où le processus du serveur PostgreSQL est incapable de lire le fichier directement, soit parce qu'il manque d'autorisations (comme lire des fichiers sur mon bureau) soit parce que le fichier n'est pas local sur la machine sur laquelle le serveur PostgreSQL est en cours d'exécution.