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 :

[JDBC] Exporter et importer les données d'une table...


Sujet :

JDBC Java

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut [JDBC] Exporter et importer les données d'une table...
    Bonjour tout le monde, je dévellope actuellement une application client/serveur en Java dans le cadre d'un projet de seconde année de DUT GTR, pour les besoins de cette application j'utilise (entre autre) une base de données en PostGresql; j'ai créé un programme Java permettant la configuration de la base de données ( dans mon cas c'est pour gérer les abscences des étudiants sur un PDA) c'est à dire d'ajouter des étudiants selon leur année, leur nom, leur prénom... et mon tuteur de projet m'a demandé de réaliser une importation et exportation à partir d'un fichier texte. En postgresql ce n'est pas trop un problème mais en Java ça bug quelque peu et je ne sais plus trop quoi faire, c'est pourquoi je requiert votre aide (n'ayant pu trouver réponse à mes questions sur le net et sur le site).
    Voici mon code actuel :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    	protected void doImportCommand() {
    		// "COPY table_destination FROM '/tmp/un_fichier';"
    		// DELETE FROM table WHERE id = 1;
    		setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
    		JFileChooser chooser = new JFileChooser();
    		chooser.setApproveButtonText("Importer");
    		chooser.setApproveButtonToolTipText("Importer");
    		chooser.setDialogTitle("Importer...");
    		setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
    		int returnVal = chooser.showOpenDialog(content);
    		if (returnVal == JFileChooser.APPROVE_OPTION) {
    			char[] data;
    			String filename = chooser.getSelectedFile().getName();
    			File directory = chooser.getCurrentDirectory();
    			setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
    			File f = new File(directory, filename);
    			try {
    				FileReader fin = new FileReader(f);
    				int filesize = (int) f.length();
    				List val = new ArrayList();
    				data = new char[filesize];
    				fin.read(data, 0, filesize);
    				String tmp = "";
    				int deb = 0;
    				int cfin = 0;
    				for (int i = deb; i < filesize; i++) {
    					if (data[i] == ';') {
    						cfin = i;
    						for (int j = deb; j < cfin; j++)
    							tmp += data[j];
    						val.add(tmp);
    						tmp = "";
    						deb = cfin;
    					}
    				}
    				val.add(";");
    				val.add(""+'\n');
    				val.add("\\.");
    				Iterator st = val.iterator();
    				ReqSQL req=new ReqSQL("COPY gestion_etudiant.etudiant FROM stdin with delimiter ';'",1);
    				while (st.hasNext()) {
    					System.out.print(st.next());
    				}
    				fin.close();
     
    			} catch (FileNotFoundException exc) {
    				statusInfo.setText("  Fichier non trouvé : " + filename);
    			} catch (IOException exc) {
    				statusInfo.setText("  IOException: " + filename);
    			}
    			statusInfo.setText("  " + filename + " chargé...");
    			setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
    		}
    	}
    Je passe par l'intermédiaire d'un traitement de fichier texte qui me ressort en System.out.print() les valeurs à ajouter à ma table, j'aimerai donc ensuite utiliser la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COPY gestion_etudiant.etudiant FROM stdin with delimiter ';';
    sachant que mon fichier de mise à jour de la table (sur la sorti système) est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    222;1;12;B;Jean-Louis;Boby;
    333;1;25;A;Lou;Bou;
    444;1;25;A;Lou;Bou;
    555;1;12;C;Louis;Boule;
    666;2;15;A;Dupont;Benjamin;
    777;1;22;A;Binoucle;Joelle;
    888;1;22;B;Marcel;Constant;
    999;1;22;C;Phillipart;Lydie;
    123;1;24;C;Micky;Moneyron;
    124;2;22;A;Ok;Computer;
    125;2;25;B;Yo;By;
    126;2;16;C;NaNa;Ouai;
    127;2;24;C;vOYON;SERIEU;
    \.
    Si vous pouviez m'aider à trouver une réponse à mon problème assez rapidement si possible étant donné que je bosse dessus tous les jours des vacances et que j'aimerais pouvoir finir dans les temps impartis...
    Merci d'avance, cordialement,
    Beni.
    ps : le code de ma classe ReqSql est la suivante :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
     
    public class ReqSQL {
    	private Connection connexion;
     
    	private Statement stmt = null;
     
    	private static List result;
     
    	public ReqSQL(String requete, int i) {
    		result = new ArrayList();
    		try {
    			Class.forName("org.postgresql.Driver");
    		} catch (ClassNotFoundException e) {
    			System.err.println("Pilote d'accès postgresql introuvable ("
    					+ e.toString() + ")");
    		}
    		ouvreConnexion("jdbc:postgresql://localhost/Etudiants", "serveur",
    				"progtr00");
    		if(i==1){
    		resulReqEtudiant(requete);
    		Config.result = getTabReq();
    		}else if (i==2){
    			reqEtudiant(requete);
    		}
    		fermeConnexion();
     
    	}
     
    	public void ouvreConnexion(String url, String user, String password) {
    		try {
    			connexion = DriverManager.getConnection(url, user, password);
    		} catch (SQLException e) {
    			System.out.println("Exception: ouverture (" + e.toString() + ")");
    		}
    	}
     
    	public void fermeConnexion() {
    		try {
    			connexion.close();
    		} catch (SQLException e) {
    			System.out.println("Exception: fermeture (" + e.toString() + ")");
    		}
    	}
    	public void reqEtudiant(String req){
    		try {
    			stmt = connexion.createStatement();
    		} catch (SQLException e) {
    		}
    		try {
    			stmt.executeUpdate(req);
    		} catch (SQLException e) {
    			System.err.println("erreur exécution requête SQL " + e.toString());
    			System.exit(1);
    		}
    	}
    	public void resulReqEtudiant(String req) {
    		result = new ArrayList();
    		ResultSet rs;
    		try {
    			stmt = connexion.createStatement();
    		} catch (SQLException e) {
    		}
    		try {
    			rs = stmt.executeQuery(req);
    			while (rs.next()) {
    				result.add("@id@");
    				result.add(rs.getString("id"));
    				result.add("@annnee@");
    				result.add(rs.getString("annee"));
    				result.add("@sous_groupe@");
    				result.add(rs.getString("sous_groupe"));
    				result.add("@groupe@");
    				result.add(rs.getString("groupe"));
    				result.add("@nom@");
    				result.add(rs.getString("nom"));
    				result.add("@prenom@");
    				result.add(rs.getString("prenom"));
    			}
    			stmt.close();
    		} catch (SQLException e) {
    			System.err.println("erreur exécution requête SQL " + e.toString());
    			System.exit(1);
    		}
     
    	}
     
    	public int tailleReq(List result) {
    		Iterator it = result.iterator();
    		int cpt = 0;
    		while (it.hasNext() && it.next() != null) {
    			cpt++;
    		}
    		return cpt;
    	}
     
    	public String[] getTabReq() {
    		String[] resultat = new String[tailleReq(result)];
    		int cpt = 0;
    		Iterator it = result.iterator();
    		while (it.hasNext()) {
    			resultat[cpt] = (String) it.next();
    			cpt++;
    		}
    		return resultat;
     
    	}
     
    }
    et le message d'erreur que j'obtien est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    erreur exécution requête SQL org.postgresql.util.PSQLException: Unknown Response Type G

  2. #2
    Membre averti Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Points : 409
    Points
    409
    Par défaut
    Bonsoir,
    Peux tu me dire qu'estce qui ne vas pas exactement?c'est au niveau de tes requetes ou ton programme?
    PS: j'ai fais une DUT GTR aussi à Chalons, ils ont toujours des projets un peu bizarre("Gerer les abscences des élèves"...) et encore t'es bien tombé là moi j'ai eut "Simulation du protocol OSPF" avec shéma réseau etc...
    Tu dois faire quoi exactement?importer une BD dans un fichier texte,c'est ca?
    Ton erreur provient-elle d'une de tes methodes ou de toute?
    Pourquoi ca marche jamais?Vive le café!

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Un peu plus d'infos...
    Oui c'est sur, celui de Challon à l'avantage d'être plus récent, j'ai visité... bref revenons à nos moutons; je ne sais pas où est situé le problème sinon j'aurais essayé de chercher un peu plus en profondeur, je pencherai plutôt pour un problème de requête SQL pourtant je suis pratiquement sur de ma syntaxe et l'erreur remontée n'est pas trop explicite...
    Enfin si tu as le temps de looker un peu plus en profondeur ce serai simpa.

  4. #4
    Membre averti Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Points : 409
    Points
    409
    Par défaut
    Re Bosnoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    "COPY gestion_etudiant.etudiant FROM stdin WITH DELIMITER ';' "
    Peut etre en majuscule car moi ca m'est déjà arriver ce truc là ave certaine base.
    Je vais regarder si je vois autre chose en attendant ta réponse
    Pourquoi ca marche jamais?Vive le café!

Discussions similaires

  1. Comment exporter et importer les partitions d'une table
    Par marvelromy dans le forum Import/Export
    Réponses: 2
    Dernier message: 04/10/2010, 17h19
  2. Importer les données d'une table dans une autre
    Par Jinkas dans le forum PL/SQL
    Réponses: 52
    Dernier message: 22/09/2009, 16h24
  3. importer les données dans une table depuis un fichier
    Par bennkabazz dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 23/12/2008, 11h34
  4. Importer les données d'une table dans un MSFLEXGRID
    Par overdoze dans le forum Access
    Réponses: 1
    Dernier message: 27/08/2007, 17h10
  5. importer les données d'une base oracle
    Par hossni dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 07/07/2005, 16h33

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