设置文本表 hsqldb java 异常

Posted

技术标签:

【中文标题】设置文本表 hsqldb java 异常【英文标题】:Set text table hsqldb java exception 【发布时间】:2014-06-06 18:35:43 【问题描述】:

我有一个保存在 txt 文件中的矩阵,我想将它加载到一个 hsqldb 表中,其中矩阵中的每一列都加载到表中的一列中。

这就是我所做的

kId= new String[numOfFields];
        String f="";
        String ff="";
        String fff="";
            for (int i=0;i<kId.length;i++) 
                while(rss.next())   
                
                kId[i]=rss.getString(1);
                f="a"+kId[i]+ " varchar(7)";
                ff+="a"+kId[i]+", ";
                fff+="a"+kId[i]+ " varchar(7), ";
                String sqlalter=new String("ALTER TABLE "+ tableName +" add "+f+"");
                //System.out.println(sqlalter);
                stmt1.executeUpdate(sqlalter);
            

        
            f=f.substring(0, f.length()-1);
            ff = ff.replaceAll(", $","");
            fff = fff.replaceAll(", $","");

        String sqlmatrixcreate=new String ("CREATE TEXT TABLE tempMatrixTable " + " ("+fff+") ");
        //System.out.print(sqlmatrixcreate);
        stmt1.executeUpdate(sqlmatrixcreate);
        String setTempMatrixTable= new String ("set table "+"tempMatrixTable"+ " ("+ff+") " + " source 'matrix.txt'");
        stmt1.executeUpdate( setTempMatrixTable);
        String insertWeight=  new String("INSERT INTO "+ tableName +"("+ff+")"+ " select weight from tempMatrixTable");
        System.out.print(insertWeight);
        stmt1.executeUpdate(insertWeight);
        String dropTempWeight= new String("drop table tempMatrixTable");
        //stmt1.executeUpdate(dropTempKey);

tableName的结构如下 身份证 | a1 | a2 | a3 ....等等

tempMatrixTable的结构如下 a1 | a2 | a3 ....等等

当我运行这段代码时,我得到了这个异常

    java.sql.SQLSyntaxErrorException: unexpected token: (   --> It refers to the line to execute the set statement

请指导我

谢谢

【问题讨论】:

【参考方案1】:

表名后不应有左括号:

String setTempMatrixTable= new String ("set table "+"tempMatrixTable"+ " source 'matrix.txt'");

【讨论】:

以上是关于设置文本表 hsqldb java 异常的主要内容,如果未能解决你的问题,请参考以下文章

原因:org.hsqldb.HsqlException: invalid statemnet - 导入 CSV 数据时需要文本表

HSQLDB:在应用程序 jar 文件中嵌入文本表

org.hsqldb.HsqlException:连接异常:连接失败:java.io.EOFException

具有 hsqldb 脚本文件的唯一约束违规异常(未读取空格字符)

HSQLDB 在检查点期间在 db.script.new 文件上抛出 Asset failed 异常和文件 io 错误

HSQLDB 神秘异常消息:“不支持功能”