# Hsqldb und text tables source not found



## needJavaProz (18. Sep 2008)

Hallo zusammen

ich hab ein problem und zwar findet es irgendwie die source nicht im sql command:

SET TABLE mytable SOURCE test.csv;fs=|

bringt:

java.sql.SQLException: Invalid TEXT table source string in statement [SET TABLE mytable SOURCE test.csv]
	at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
	at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
	at org.hsqldb.jdbc.jdbcStatement.executeQuery(Unknown Source)
	at Nexus.DatabaseAccess.main(DatabaseAccess.java:31)


ich hab test.csv im Folder C:\properties\DB aber irgendwie packt ers nicht.

Weiss jemand von euch vielleicht rat das wäre echt super 

danke und gruss
Thomas


csv-datei:

1;Relation
2;Police
3;isin
4;securitydescription
5;costprice
6;marketprice
7;units
8;volume
9;provision
10;currency
11;factor
12;fundlistrate
13;rate
14;volume
15;broker
16;brokercode
17;VVvolumeCHF





```
package Nexus;

import java.sql.*;


public class DatabaseAccess {
	
	static Connection cn;
	
	public static void main(String[] args)  {
		try {
			DriverManager.registerDriver(new org.hsqldb.jdbcDriver());
			cn = DriverManager.getConnection( "jdbc:hsqldb:file:C:/Properties/DB/", "sa", "" );
			
			
			Statement st = cn.createStatement();
			Statement stCreate = cn.createStatement();
			String sqlCreate = "CREATE TABLE mytable(id varchar, name varchar)";
			
			st.executeQuery(sqlCreate);
			String sql = "SET TABLE mytable SOURCE test.csv;fs=;";
			
			
	//		st.execute(sql);
			st.executeQuery(sql);
		
		} catch (SQLException Se) {
			Se.printStackTrace();
		}	
	}
}
```


----------



## HoaX (18. Sep 2008)

das problem ist dein fs=

du musst schon ... SOURCE "test.csv;fs=;" schreiben, den normalerweise bedeutet ein ; das ende eines statements. und nur fs= einzeln betrachtet mag hsqldb halt nicht


----------



## needJavaProz (22. Sep 2008)

ok danke, das hab ich jetzt geändert ... funzt ja doch £


----------



## needJavaProz (22. Sep 2008)

gelöscht ... irgendwie hab ich heut voll die mattscheibe  :bahnhof:


----------



## needJavaProz (23. Sep 2008)

für den nächsten 

noch ein kleiner netter hinweis ein ' und kein " für string schnallt er nicht ecape hin oder her juhu.

.script file:

------------------------

CREATE SCHEMA PUBLIC AUTHORIZATION DBA
CREATE TEXT TABLE POLICEN(ID VARCHAR(20),NAME VARCHAR(20),VAR VARCHAR(20),VALUE VARCHAR(20))
SET TABLE POLICEN SOURCE "policen.csv;fs=\semi"
CREATE TEXT TABLE FELDER(ID VARCHAR(10),NAME VARCHAR(20))
SET TABLE FELDER SOURCE "fields.csv;fs=\semi"
CREATE TEXT TABLE POLICENFIELDMAP(POLICEN_ID VARCHAR(20),FIELDS_ID VARCHAR(20))
SET TABLE POLICENFIELDMAP SOURCE "policenfieldmap.csv;fs=\semi"
CREATE USER SA PASSWORD ""
GRANT DBA TO SA
SET WRITE_DELAY 10

-------------------------



```
package Nexus;

import java.sql.*;
import java.io.*;
import java.util.*;



public class DatabaseAccess {
	
	static Connection cn;	
	
	public void setConnection() throws SQLException {
		DriverManager.registerDriver(new org.hsqldb.jdbcDriver());
		cn = DriverManager.getConnection( "jdbc:hsqldb:file:C:/Properties/DB/", "sa", "" );
		Statement st = cn.createStatement();
//		Statement stCreate = cn.createStatement();
		String policenSql = "SET TABLE POLICENFIELDMAP SOURCE \"policenfieldmap.csv;fs=\\semi\"";
		String pfmSql = "SET TABLE POLICENFIELDMAP SOURCE \"policenfieldmap.csv;fs=\\semi\"";
		String fieldsSql = "SET TABLE FELDER SOURCE \"fields.csv;fs=\\semi\"";
		
		st.executeQuery(policenSql);
		st.executeQuery(pfmSql);
		st.executeQuery(fieldsSql);
	}
	
	
	public void setTextTables() {
		
		
		
	}
	
	public ResultSet getFields(String policenname) throws SQLException {
		ArrayList<String> fieldlist = null;
		Statement st = cn.createStatement();
		ResultSet rs = null;
		
		rs = st.executeQuery("SELECT F.NAME from FELDER F, POLICENFIELDMAP PFM , POLICEN P where P.ID = PFM.POLICEN_ID and PFM.FIELDS_ID = F.ID and (P.NAME = \'" + policenname + "\')");
		
		while (rs.next()) {
			String name = rs.getString("NAME");
			System.out.println(name);	
		}
		return rs;
	}
	
	
	
	
	public static void main(String[] args)  {
		try {
			
			String policenname = null;
			ResultSet rs = null;
			policenname = "Fundprovision";
			DatabaseAccess DA = new DatabaseAccess();
			DA.setConnection();
			rs = DA.getFields(policenname);
			
			System.out.println("bla");
		} catch (SQLException Se) {
			Se.printStackTrace();
		}	
	}
}
```


----------



## HoaX (24. Sep 2008)

needJavaProz hat gesagt.:
			
		

> für den nächsten
> 
> noch ein kleiner netter hinweis ein ' und kein " für string schnallt er nicht ecape hin oder her juhu.



naja, das ist halt kein gewöhnlicher string wie wenn man etwas als string-value für eine spalte angibt sondern fällt ehr in die kategorie tabelle/spalte, und die schreibt man in ""
manchmal sollte man halt der dokumentation vertrauen


----------

