IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Importer/exporter une base de données postgresql à partir du code java


Sujet :

JDBC Java

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut Importer/exporter une base de données postgresql à partir du code java
    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?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    Pourquoi ne pas utiliser la commande pg_dump ?
    Par curiosité pourquoi veux-tu importer/exporter les données (et structure) depuis l'appli swing ?

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    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
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    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, ...).

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    mon client va juste faire l'importation et l'exportation de la BD.
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    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.

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    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:
    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();
    					}
    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é?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    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é.

  9. #9
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Citation Envoyé par NoClassDefFound Voir le message
    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é.
    Que faire donc?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  10. #10
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    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 ?

  11. #11
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Citation Envoyé par NoClassDefFound Voir le message
    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
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  12. #12
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    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.
    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
    Cette ligne de commande ssh pourrait être appelée depuis l'appli swing.
    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
    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.

  13. #13
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Citation Envoyé par NoClassDefFound Voir le message
    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.
    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
    Cette ligne de commande ssh pourrait être appelée depuis l'appli swing.

    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.
    Ah d'accord je vois merci pour tes éclairages.
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/02/2014, 10h06
  2. Réponses: 4
    Dernier message: 27/05/2013, 19h08
  3. Réponses: 0
    Dernier message: 10/02/2009, 09h49
  4. Réponses: 6
    Dernier message: 29/04/2008, 11h24
  5. Réponses: 3
    Dernier message: 24/04/2008, 09h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo