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 !