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 :

HSQLDB et charger un CSV


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 47
    Par défaut HSQLDB et charger un CSV
    Bonjour, j'essaie de charger un fichier CSV dans une base de données embarquées HSQLDB. J'utilise SET TABLE mytable SOURCE "myfile;fs=;" afin de charger dans mytable le fichier myfile séparé par ";".

    Avec le code de la fonction ChargerCSV() j'ai une erreur de tokken:

    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
     
    java.sql.SQLException: unexpected token: /Users/ceb/Downloads/DBINIT.csv;fs=;
    	at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
    	at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
    	at org.hsqldb.jdbc.JDBCStatement.executeUpdate(Unknown Source)
    	at dbManagement.DbManager.createTable(DbManager.java:95)
    	at dbInterface.ChargementDonnées.ChargerCSV(ChargementDonnées.java:49)
    	at dbInterface.Fenetre$2.actionPerformed(Fenetre.java:144)
    	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
    	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    	at java.awt.Component.processMouseEvent(Component.java:6348)
    	at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
    	at java.awt.Component.processEvent(Component.java:6113)
    	at java.awt.Container.processEvent(Container.java:2085)
    	at java.awt.Component.dispatchEventImpl(Component.java:4714)
    	at java.awt.Container.dispatchEventImpl(Container.java:2143)
    	at java.awt.Component.dispatchEvent(Component.java:4544)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
    	at java.awt.Container.dispatchEventImpl(Container.java:2129)
    	at java.awt.Window.dispatchEventImpl(Window.java:2475)
    	at java.awt.Component.dispatchEvent(Component.java:4544)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Caused by: org.hsqldb.HsqlException: unexpected token: /Users/ceb/Downloads/DBINIT.csv;fs=;
    	at org.hsqldb.error.Error.parseError(Unknown Source)
    	at org.hsqldb.ParserBase.unexpectedToken(Unknown Source)
    	at org.hsqldb.ParserBase.checkIsValue(Unknown Source)
    	at org.hsqldb.ParserBase.readQuotedString(Unknown Source)
    	at org.hsqldb.ParserCommand.compileTextTableSource(Unknown Source)
    	at org.hsqldb.ParserCommand.compileSet(Unknown Source)
    	at org.hsqldb.ParserCommand.compilePart(Unknown Source)
    	at org.hsqldb.ParserCommand.compileStatements(Unknown Source)
    	at org.hsqldb.Session.executeDirectStatement(Unknown Source)
    	at org.hsqldb.Session.execute(Unknown Source)
    Le code :

    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
     
    	public static void ChargerCSV() {
    		DbManager manager = new DbManager();
    		manager.dbConnect();
    		manager.dropTable("TABLEINIT");
    		manager.createTable("CREATE TABLE TABLEINIT (" +
    				"DEP VARCHAR(30)," +
    				"CAN VARCHAR(30)," +
    				"PAYS VARCHAR(30)," +
    				"DEPCOM INTEGER," +
    				"TYPL VARCHAR(30)," +
    				"CATL VARCHAR(30)," +
    				"ACHI VARCHAR(30)," +
    				"HLML VARCHAR(30)," +
    				"STOC VARCHAR(50)," +
    				"TYPO VARCHAR(50)," +
    				"MAT VARCHAR(80)," +
    				"CHCML VARCHAR(10)," +
    				"CMBL VARCHAR(10)," +
    				"NBLOG FLOAT," +
    				"SURF_TOT FLOAT," +
    				"SURF_MOY FLOAT," +
    				"CONSO_CHAUF_EF FLOAT," +
    				"CONSO_CHAUF_EP FLOAT," +
    				"CONSO_UNI_EF FLOAT," +
    				"CONSO_UNI_EP FLOAT," +
    				"CONSO_SURF_EF FLOAT," +
    				"CONSO_SURF_EP FLOAT," +
    				"CONSO_TOT_EF FLOAT," +
    				"CONSO_TOT_EP FLOAT," +
    				"EMIS_CHAUF FLOAT," +
    				"EMIS_TOT FLOAT," +
    				"DPE_ENER VARCHAR(10)," +
    				"DPE_CO2 VARCHAR(10)" +
    				");");
     
    		// chargement de la base grace au LOAD de SQL
    		manager.createTable("SET TABLE TABLEINIT SOURCE ///Users/ceb/Downloads/DBINIT.csv;fs=;");
    		// Maintenant, nous demandons l'affichage de la table
    		manager.printTable("TABLEINIT");
     
    		//manager.dropTable("PERSONNE");
    		// Enfin, avant de partir, on se déconnecte. Le fait de ne pas supprimer
    		// la table fait qu'à la prochaine connexion, on
    		// récupèrera les données enregistrées.
    		//manager.dbDisconnect();
     
     
    	}
    J'ai testé avec :

    manager.createTable("SET TABLE TABLEINIT SOURCE ///Users/ceb/Downloads/DBINIT.csv;fs=;");

    manager.createTable("SET TABLE TABLEINIT SOURCE //Users/ceb/Downloads/DBINIT.csv;fs=;");

    manager.createTable("SET TABLE TABLEINIT SOURCE //Users//ceb//Downloads//DBINIT.csv;fs=;");

    Mais rien ne marche !

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    voir la documentation, mais pour créer un table csv, la commande est "create text table" pas "create table"

    ensuite pour charger la commande est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SET TABLE TABLEINIT SOURCE \"///Users/ceb/Downloads/DBINIT.csv;fs=;\""
    enfin, comme on a pas le code de ton dbmanager, on ignore ce qu'il faut de ta requete quand tu appelle create table

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 47
    Par défaut
    Sa avance.


    j'ai ce message maintenant sans TEXT:

    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
    java.sql.SQLException: invalid statemnet - text table required in statement [SET TABLE TABLEINIT SOURCE "/Users/ceb/Downloads/DBINIT.csv;fs=;"]
    	at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
    	at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
    	at org.hsqldb.jdbc.JDBCStatement.executeUpdate(Unknown Source)
    	at dbManagement.DbManager.createTable(DbManager.java:95)
    	at dbInterface.ChargementDonnées.ChargerCSV(ChargementDonnées.java:49)
    	at dbInterface.Fenetre$2.actionPerformed(Fenetre.java:144)
    	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
    	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    	at java.awt.Component.processMouseEvent(Component.java:6348)
    	at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
    	at java.awt.Component.processEvent(Component.java:6113)
    	at java.awt.Container.processEvent(Container.java:2085)
    	at java.awt.Component.dispatchEventImpl(Component.java:4714)
    	at java.awt.Container.dispatchEventImpl(Container.java:2143)
    	at java.awt.Component.dispatchEvent(Component.java:4544)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
    	at java.awt.Container.dispatchEventImpl(Container.java:2129)
    	at java.awt.Window.dispatchEventImpl(Window.java:2475)
    	at java.awt.Component.dispatchEvent(Component.java:4544)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Caused by: org.hsqldb.HsqlException: invalid statemnet - text table required
    	at org.hsqldb.error.Error.error(Unknown Source)
    	at org.hsqldb.error.Error.error(Unknown Source)
    	at org.hsqldb.StatementCommand.getResult(Unknown Source)
    	at org.hsqldb.StatementCommand.execute(Unknown Source)
    	at org.hsqldb.Session.executeCompiledStatement(Unknown Source)
    	at org.hsqldb.Session.executeDirectStatement(Unknown Source)
    	at org.hsqldb.Session.execute(Unknown Source)
    	... 30 more
    avec :

    manager.createTable("SET TABLE TABLEINIT SOURCE \"/Users/ceb/Downloads/DBINIT.csv;fs=;\"");


    Et avant TEXT j'ai :

    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
    java.sql.SQLException: bad TEXT table source file - line number: no value specified for field 0 in statement [SET TABLE TABLEINIT SOURCE "/Users/ceb/Downloads/DBINIT.csv;fs=;"]
    	at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
    	at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
    	at org.hsqldb.jdbc.JDBCStatement.executeUpdate(Unknown Source)
    	at dbManagement.DbManager.createTable(DbManager.java:95)
    	at dbInterface.ChargementDonnées.ChargerCSV(ChargementDonnées.java:49)
    	at dbInterface.Fenetre$2.actionPerformed(Fenetre.java:142)
    	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
    	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    	at java.awt.Component.processMouseEvent(Component.java:6348)
    	at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
    	at java.awt.Component.processEvent(Component.java:6113)
    	at java.awt.Container.processEvent(Container.java:2085)
    	at java.awt.Component.dispatchEventImpl(Component.java:4714)
    	at java.awt.Container.dispatchEventImpl(Container.java:2143)
    	at java.awt.Component.dispatchEvent(Component.java:4544)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
    	at java.awt.Container.dispatchEventImpl(Container.java:2129)
    	at java.awt.Window.dispatchEventImpl(Window.java:2475)
    	at java.awt.Component.dispatchEvent(Component.java:4544)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Caused by: org.hsqldb.HsqlException: bad TEXT table source file - line number: no value specified for field 0
    	at org.hsqldb.error.Error.error(Unknown Source)
    	at org.hsqldb.TextTable.connect(Unknown Source)
    	at org.hsqldb.TextTable.openCache(Unknown Source)
    	at org.hsqldb.TextTable.setDataSource(Unknown Source)
    	at org.hsqldb.StatementCommand.getResult(Unknown Source)
    	at org.hsqldb.StatementCommand.execute(Unknown Source)
    	at org.hsqldb.Session.executeCompiledStatement(Unknown Source)
    	at org.hsqldb.Session.executeDirectStatement(Unknown Source)
    	at org.hsqldb.Session.execute(Unknown Source)
    	... 30 more
    Caused by: org.hsqldb.HsqlException: no value specified for field
    	at org.hsqldb.error.Error.error(Unknown Source)
    	at org.hsqldb.error.Error.error(Unknown Source)
    	at org.hsqldb.persist.TextCache.initParams(Unknown Source)
    	at org.hsqldb.persist.DataFileCache.<init>(Unknown Source)
    	at org.hsqldb.persist.TextCache.<init>(Unknown Source)
    	at org.hsqldb.persist.Log.openTextCache(Unknown Source)
    	at org.hsqldb.persist.Logger.openTextFilePersistence(Unknown Source)
    	... 38 more
    et le dbManager

    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
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    package dbManagement;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    /**
     * 
     * Classe permettant la manipulation de HSQLDB.
     * 
     * @author Antoine Neveux
     */
    public class DbManager {
     
    	private Connection dbConnection;
     
    	public DbManager() {
     
    	}
     
    	public DbManager(Connection dbCon) {
    		this.dbConnection = dbCon;
    	}
     
    	/**
             * Méthode permettant de se connecter à une base de données
             * 
             * @pre Aucune connexion en cours sur la base
             * @post La connexion est établie si il n'y a pas eu d'exception attrapée.
             */
    	public void dbConnect() {
    		try {
    			// On charge le driver JDBC fourni par HSQLDB
    			Class.forName("org.hsqldb.jdbcDriver").newInstance();
    			// On récupère la connexion à la base HSQLDB choisie, ici
    			// "database".
    			this.dbConnection = DriverManager.getConnection(
    					"jdbc:hsqldb:file:database", "sa", "");
    		} catch (InstantiationException e) {
    			e.printStackTrace();
    		} catch (IllegalAccessException e) {
    			e.printStackTrace();
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
     
    	/**
             * Méthode permettant de se déconnecter d'une base de données
             * 
             * @pre Il faut être connecté à la base de données
             * @post La connexion est fermée, et dans le cas d'HSQLDB, la base est
             *       enregistrée sur le disque dur.
             */
    	public void dbDisconnect() {
    		try {
    			// Un objet Statement permet d'exécuter des requêtes SQL.
    			Statement statement = this.dbConnection.createStatement();
    			// On exécute la requête "SHUTDOWN", pour signifier à HSQLDB que
    			// l'on se déconnecte.
    			statement.execute("SHUTDOWN");
    			// On oublie pas de fermer la requête
    			statement.close();
    			// Et de fermer la connexion.
    			this.dbConnection.close();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
     
    	/**
             * Méthode permettant la création d'une table dans la base de données.
             * 
             * @param sqlQuery
             *            La requête SQL permettant de créer une table dans la base de
             *            données.
             * 
             * @pre sqlQuery est une requête SQL qui permet la création d'une table dans
             *      la base de données, et sa syntaxe est correcte.
             * @pre La connexion à la base de données est établie
             * @post La table est créée dans la base de données
             */
    	public void createTable(String sqlQuery) {
    		try {
    			Statement statement = this.dbConnection.createStatement();
    			// Dans cet exemple, pour faciliter la compréhension du code, la
    			// procédure permettant la création d'une table est en fait
    			// une simple exécution de requête. La requête SQL pour créer la
    			// table ne sera donc pas gérée dans cette procédure.
    			statement.executeUpdate(sqlQuery);
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
     
    	/**
             * Méthode permettant la suppression d'une table de la base de données.
             * 
             * @param tableName
             *            est le nom de la table à supprimer de la base de données
             * 
             * @pre tableName est le nom de la table à supprimer de la base de données
             * @pre La connexion à la base de données est établie
             * @post La table est supprimée
             */
    	public void dropTable(String tableName) {
    		try {
    			Statement statement = this.dbConnection.createStatement();
    			// On exécute simplement la requête "DROP TABLE " suivie du nom de
    			// la table à supprimer. Toutes les données contenues dans la table
    			// sont supprimées également.
    			statement.executeUpdate("DROP TABLE " + tableName);
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
     
    	/**
             * Méthode permettant l'insertion de données dans une table.
             * 
             * @param sqlQuery
             *            est une requête permettant l'insertion de données dans une
             *            table
             * 
             * @pre sqlQuery est une requête permettant l'insertion de données dans une
             *      table
             * @pre La connexion à la base de données est établie
             * @post L'enregistrement est ajouté
             */
    	public void insertValues(String sqlQuery) {
    		try {
    			Statement statement = this.dbConnection.createStatement();
    			statement.executeUpdate(sqlQuery);
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
     
    	/**
             * Méthode permettant l'insertion de données dans la table Personne
             * 
             * @param pName
             *            est le nom de la personne à enregistrer
             * @param pSurname
             *            est le prénom de la personne à enregistrer
             * 
             *            Pour cet exemple, nous supposerons que le champ ID de la table
             *            PERSONNE est un identificateur unique auto-incrémenté, Nous
             *            n'avons donc pas besoin de nous occuper de cette colonne de la
             *            table.
             * 
             * @pre La table PERSONNE existe, et est correctement formatée
             * @pre pName est le nom de la personne à enregistrer, et fait moins de 255
             *      caractères
             * @pre pSurname est le prénom de la personne à enregistrer, et fait moins
             *      de 255 caractères
             * @pre La Connexion à la base de données est établie
             * @post L'enregistrement est ajouté dans la table PERSONNE
             */
    	public void insertValuesIntoPersonne(String pName, String pSurname) {
    		try {
    			Statement statement = this.dbConnection.createStatement();
    			// Cette fois, la requête d'insertion dans la base de données est
    			// écrite directement dans le code, et on utilise les
    			// paramètres de la procédure pour insérer les valeurs dans la
    			// table.
    			statement
    					.executeUpdate("INSERT INTO PERSONNE (NOM, PRENOM) VALUES ('"
    							+ pName + "','" + pSurname + "')");
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
     
    	/**
             * Méthode permettant la suppression d'un enregistrement de la base de
             * données.
             * 
             * @param tableName
             *            est le nom de la table de la base de données dans laquelle
             *            nous supprimerons un enregistrement
             * @param id
             *            est l'identifiant unique permettant d'identifier
             *            l'enregistrement à supprimer
             * 
             *            Pour cet exemple, nous supposerons que l'identifiant unique de
             *            la table utilisé se nomme "ID".
             * 
             * @pre tableName est le nom de la table où se trouve l'enregistrement à
             *      supprimer, et cette table existe.
             * @pre id est l'identifiant unique de l'enregistrement à supprimer
             * @pre La connexion à la base de données est établie
             * @post L'enregistrement est supprimé de la table
             */
    	public void deleteFrom(String tableName, String id) {
    		try {
    			Statement statement = this.dbConnection.createStatement();
    			// On utilise une requête DELETE, en supposant que le champ ID
    			// existe dans la table choisie.
    			statement.executeUpdate("DELETE FROM " + tableName + " WHERE ID='"
    					+ id + "'");
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
     
    	/**
             * Méthode permettant d'afficher le contenu d'une table sans connaître sa
             * structure.
             * 
             * @param tableName
             *            est le nom de la table à afficher
             * 
             * @pre tableName est le nom de la table à afficher. Cette table existe, et
             *      elle est correctement formatée
             * @pre La connexion à la base de données est établie
             * @post Le contenu de la table est affiché à l'écran
             */
    	public void printTable(String tableName) {
    		try {
    			Statement statement = this.dbConnection.createStatement();
    			// Nous utiliserons ici un ResultSet, qui est un ensemble
    			// d'enregistrements qui représente le résutat d'une requête SQL
    			// sur la base de données. Le format du résultat obtenu peut être
    			// parcouru facilement, puisqu'il se présente comme un tableau
    			// à deux dimensions, ou chaque ligne représente un enregistrement
    			// de la base de données.
    			ResultSet result = statement.executeQuery("SELECT * FROM "
    					+ tableName);
    			// Il faut maintenant parcourir et afficher le ResultSet.
    			// Attention, dans cet exemple, nous partirons du principe que nous
    			// ne connaissons pas le nom des différentes colonnes,
    			// Afin de développer une fonction assez générique. La syntaxe qui
    			// suit est donc un peu particulière.
    			ResultSetMetaData resultMeta = result.getMetaData();
    			// On récupère le nombre de colonnes :
    			int nbColumns = resultMeta.getColumnCount();
    			// Le code qui suit n'est pas réellement propre, mais suffira pour
    			// l'exemple. Encore une fois, le but est de comprendre le principe,
    			// pas de traiter un cas particulier. Vous adapterez le code à votre
    			// propre projet.
    			int i;
    			Object o;
     
    			// Grâce à cette boucle, nous allons pouvoir traiter tous les
    			// enregistrements récupérés.
    			while (result.next()) {
    				// Grâce à cette boucle, nous allons traiter chaque champ de
    				// l'enregistement courant.
    				for (i = 0; i < nbColumns; i++) {
    					// On récupère sous forme d'objet l'élément au champ i
    					o = result.getObject(i + 1);
    					// Puis on affiche la colonne récupérée, suivie d'une
    					// tabulation, pour la lisibilité de l'affichage
    					System.out.print(o.toString() + "\t");
    				}
    				// On effectue ensuite un saut à la ligne, pour l'affichage de
    				// l'enregistrement suivant
    				System.out.println();
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
     
    	/**
             * Méthode permettant la mise à jour d'un enregistrement dans une table de
             * la base de données.
             * 
             * @param tableName
             *            est le nom de la table dans lequel se situe l'enregistrement à
             *            mettre à jour.
             * @param id
             *            est l'identifiant unique permettant d'identifier
             *            l'enregistrement à mettre à jour.
             * @param columnName
             *            est le nom du champ à mettre à jour dans l'enregistrement.
             * @param newValue
             *            est la nouvelle valeur du champ.
             * 
             * @pre tableName est le nom de la table dans lequel se situe
             *      l'enregistrement à mettre à jour. Cette table existe, et est
             *      correctement formatée.
             * @pre id est l'identifiant unique de l'enregistrement à modifier
             * @pre columnName est le nom de la colonne à mettre à jour. Ce champ
             *      existe.
             * @pre newValue est la nouvelle valeur du champ, et elle respecte les
             *      prérequis de ce champ (type, taille, etc.)
             * @pre La connexion à la base de données est établie
             * @post L'enregistrement est modifié
             */
    	public void updateValues(String tableName, String id, String columnName,
    			String newValue) {
    		try {
    			Statement statement = this.dbConnection.createStatement();
    			statement.executeUpdate("UPDATE " + tableName + " SET "
    					+ columnName + " = '" + newValue + "' WHERE ID = '" + id
    					+ "'");
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
     
    }

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    le chemin vers le fichier est correct?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 47
    Par défaut
    voila le resultat du ls -lia du fichier

    1227886 -rw-r--r--@ 1 ceb staff 95501820 11 jui 12:08 /Users/ceb/Downloads/DBINIT.csv

    Bon j'ai trouvé faut le mettre dans le dossier ou il y a les sources car il cherche dans le dossier des sources + /Users/ceb/Downloads/DBINIT.csv

    Sinon j'ai un autre probleme.

    Il n'aime pas le ";" dans :

    manager.createTable("SET TABLE TABLEINIT SOURCE \"DBINIT.csv;fs=;\"");

    J'ai testé :

    manager.createTable("SET TABLE TABLEINIT SOURCE \"DBINIT.csv;fs=\;\""); --> compile pas

    manager.createTable("SET TABLE TABLEINIT SOURCE \"DBINIT.csv;fs=";"\""); --> compile pas

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    a tout hasard, essayer quelque chose de cohérent?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    manager.createTable("SET TABLE TABLEINIT SOURCE \"DBINIT.csv;fs=\\;\"");

Discussions similaires

  1. Charger Fichier Csv dans SQL Server
    Par aurelkb dans le forum SSIS
    Réponses: 4
    Dernier message: 07/08/2013, 19h18
  2. Réponses: 2
    Dernier message: 19/03/2008, 15h51
  3. Charger un Fichier CSV avec traitement
    Par Iphelias dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 06/08/2007, 14h53
  4. [OLE][Excel] Charger un fichier csv
    Par bandit boy dans le forum C++Builder
    Réponses: 17
    Dernier message: 29/05/2006, 09h43

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