Установить текстовые таблицы hsqldb Java

1

Я пытаюсь создать текстовую таблицу, установить ее значения из файла, а затем вставить эти значения обратно в обычную таблицу, используя hsqldb в Java-коде, как показано в этом коде:

String sqlkeywordcreate=new String ("CREATE TABLE keywordsTable " + " (k_id INTEGER IDENTITY not NULL PRIMARY KEY,  keywords varchar(20))");
        String sqlkeywordcreate1=new String ("CREATE TEXT TABLE tempKeywordsTable " + " (key varchar(20))");
        System.out.println(sqlkeywordcreate);
        stmt1.executeUpdate(sqlkeywordcreate);
        stmt1.executeUpdate(sqlkeywordcreate1);
        int numOfFields=di.getAllTerms(); 
        String setTempKeywordsTable= new String ("set table "+ "tempKeywordsTable"+ " source 'E:/Thesis/ThesisWork/outdata/keywords.txt';ignore_first=false;shutdown=true");
        stmt1.execute( setTempKeywordsTable);
        String insertkey=  new String("INSERT INTO keywordsTable"+ "(keywords)"+ "select key from tempKeywordsTable");
        stmt1.executeUpdate(insertkey);
        String dropTempKey= new String("drop table tempKeywordsTable");
        stmt1.executeUpdate(dropTempKey);

Но когда я запускаю это, я получил это исключение:

java.sql.SQLException: bad TEXT table source file - line number: 0 org.hsqldb.HsqlException: Access is denied: E:/Thesis/ThesisWork/outdata/keywords.txt in statement [set table tempKeywordsTable source 'E:/Thesis/ThesisWork/outdata/keywords.txt']
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.executeUpdate(Unknown Source)
at ThesisCode.ReductionTry.main(ReductionTry.java:73)
Exception in thread "main" java.lang.NullPointerException
at ThesisCode.ReductionTry.main(ReductionTry.java:147)

Я много искал, чтобы выяснить проблему, но ничего не нашел. Пожалуйста, дайте мне совет.

Теги:
file
hsqldb

2 ответа

1
Лучший ответ

Остерегайтесь пробелов при конкатенации строк, вы должны написать:

String setTempKeywordsTable= new String ("set table "+"tempKeywordsTable"+ " source 'E:/Thesis/ThesisWork/outdata/keywords.

вместо:

String setTempKeywordsTable= new String ("set table"+ "tempKeywordsTable"+ " source 'E:/Thesis/ThesisWork/outdata/keywords.

Вы делаете ту же ошибку в String insertkey.

  • 0
    Спасибо большое мартин
0

Одно обновление от меня:

Теперь мы должны использовать относительный путь. Например: db существует здесь: "c:\folder1\folder2". Файл с данными должен находиться в folder2 или в дочерних папках.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню