Bonjour,
j'essaye d'exporter ma base de donnée postgresql, jusqu'ici sans succès.
Je cherche à le faire en java entièrement, puisqu'il s'agit d'une méthode à intégrer dans une appli.
1/ Initialement, j'avais voulu utiliser pg_dump:
J'ai trouvé de NOMBREUX exemples avec pg_dump, et j'ai joué avec les paramètres, mais le principe semble être toujours le même: Runtime.getRuntime().exec("pg_dump ...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 String executeCmd = "pg_dump -U " + dbUser + " -W " + dbPass + " -d " + dbName + " > " + pgsqlFile.getAbsolutePath() + ".pgsql"; Process runtimeProcess = Runtime.getRuntime().exec(executeCmd); runtimeProcess.waitFor(); System.out.println(runtimeProcess.exitValue());
Le code retourné était 1 (dans tout les cas), et le fichier résultat n'existait pas. Aucune idée pourquoi.
2/ J'ai ensuite voulu utiliser CopyMnager:
Essais 1&2 ont strictement le même résultat, un fichier complètement vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Class.forName("org.postgresql.Driver"); Connection connection = DriverManager.getConnection(DB_URL, USER, PASS); statement = conn.createStatement(); CopyManager copyManager = new CopyManager((BaseConnection) connection); String req = "COPY table1 to STDOUT"; //Essai 1 BufferedWriter fileWriter = new BufferedWriter(new FileWriter(pgsqlFile)); copyManager.copyOut(req, fileWriter); //Essai 2 copyManager.copyOut(req, new FileWriter(pgsqlFile)); //Essai 3 copyManager.copyOut("COPY table1 to " + pgsqlFile);
Essai 3 me dit que je ne dispose pas des droit d'accès pour copier dans un fichier.
Bien sûr, même si la méthode marchait, il me faudrait exporter toutes les tables une par une au lieu de la bdd entière en une fois contrairement à pg_dump, ce qui est pas exactement idéal.
Quelqu'un aurait une méthode fiable pour exporter entièrement une base de donnée?
Merci!
Partager