Bonjour comme mon intitulé l'indique j'aimerais importer ou exporter ma base de données postgresql à partir de mon application swing. Comment puis-je m'y prendre s'il vous plait?
Bonjour comme mon intitulé l'indique j'aimerais importer ou exporter ma base de données postgresql à partir de mon application swing. Comment puis-je m'y prendre s'il vous plait?
Pourquoi ne pas utiliser la commande pg_dump ?
Par curiosité pourquoi veux-tu importer/exporter les données (et structure) depuis l'appli swing ?
Je veux développer une espèce de client pour le sgbd afin de permettre aux administrateurs de manipuler la bd aisément et moi seul le super admin j'aurai accès au sgbd
Pourquoi ne pas donner accès au sgbd à différents comptes utilisateurs possédant des droits limités (privileges/grants) ?
Si effectivement tu veux masquer/limiter l'accès au sgbd via ton application swing, ça peut vite devenir très long et très compliqué à développer/maintenir selon les fonctionnalités que tu souhaites accorder aux utilisateurs (select, insert, update, delete, create drop, grant, ...), et c'est sans compter sur les problématiques de sécurité.
En java, tu peux interagir avec le sgbd via le driver jdbc pour exécuter des commandes, récupérer les méta-données (tables, colonnes, contraintes, ...).
mon client va juste faire l'importation et l'exportation de la BD.
Je comprends bien que c'est de l'import/export mais est-ce qu'il s'agit d'importer/exporter toute la base de données, c'est à dire données + structure ?
Si on parle d'import/export de données uniquement, il y a entre autres choses la problématique des contraintes d'intégrité de ton modèle de données.
Prenons le cas d'un import, est-ce que tes administrateurs fourniront en entrée les clefs primaires des différents lignes ? sous quelle forme ? du SQL, un CSV, un fichier excel, un dump postgres ?.
Un import/export "brut" peut être opéré avec les commandes pg_dump & pg_restore en utilisant le ProcessBuilder du jdk.
Si les clefs primaires ne sont pas fournies en entrée, il faudra développer la routine de chargement/mise à jour de la bdd.
Dans ce dernier cas, soit tu fait tout dans ta couche métier, grosso modo tu charges les données, tu les transformes, tu les insères (principe d'un ETL), soit tu fais un mixte en déléguant le chargement des données à postgreSQL dans des tables temporaires et tu les les traites ensuite.
Il ne s'agit que d'une seule bd et de l'importation et exportation brut donc schéma et BD je suis tombé sur un truc du genre:
Maintenant est ce qu'il ya des contraintes pour l’exécution de la commande sur un poste où mon sgbd n'est pas installé?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 final String cmd = "pg_dump --format=c --username \"postgres\" db_name > \"D:\\pgBackup\\db_name.backup\""; java.lang.Runtime rt = java.lang.Runtime.getRuntime(); try { java.lang.Process p = rt.exec(cmd); p.destroy(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
Pour de l'import/export complet de base, pg_dump (export) et pg_restore (import) sont les plus indiqués, le code que tu as trouvé lance la commande pg_dump depuis le code java.
C'est tout à fait normal que la commande ne fonctionne pas sur ton poste si postgresql n'y est pas installé.
Si donner des accès à la machine hébergeant le serveur posgreSQL est inenvisageable, à part exécuter depuis l'appli swing un script à distance sur la machine hébergeant le postsgres.
Et un client type pgAdmin ou autre ne suffirait pas ?
Je ne comprends pas très bien tes explications mais ce que je peux dire c'est que je ne veux pas installer PgAdmin sur un autre poste à part le serveur, est ce que c'est possible d'exécuter ma commande sur poste distant s'il ne possède pas le sgbd mais configuré au départ pour recevoir des requêtes distantes telles que les import et export
Je parlais d'exécuter les commandes pg_dump et pg_restore à partir de l'appli swing.
Imaginons que ton serveur posgresql soit en linux/unix, tu pourrais, depuis n'importe quel poste lancer la commande pg_dump en encapsulant le tout dans une commande ssh.
Cette ligne de commande ssh pourrait être appelée depuis l'appli swing.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ssh user@machine_distante "pg_dump -U dbuser -h localhost -C --column-inserts" >> backup_file_machine_locale.sql
Désolé je ne comprends pas non plus, pour pouvoir lancer les commandes pg_dump et pg_restore il faut y avoir accès aux binaires pg_dump et pg_restore d'une manière ou d'une autre.est ce que c'est possible d'exécuter ma commande sur poste distant s'il ne possède pas le sgbd mais configuré au départ pour recevoir des requêtes distantes telles que les import et export
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager