有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在hsqldb文本文件中插入列标题

我正在修改其他人的Java代码,一边学习Java::-。我正在编写hsqldb文本文件,我希望最终的文件有一个“标题”行,这样它们就可以更容易地理解为纯文本。hsqldb有一个“ignore_first=true”开关用于读取此类文件,但我找不到写入该行的方法。它可能不存在,但文档中有一个对源标题的诱人引用。有人知道怎么用吗? 以下是我尝试过的一个简化示例:

    String createtextTable =  
        "CREATE TEXT TABLE MolSet (" +
            " id INT NOT NULL IDENTITY," +
            " filename VARCHAR(300)," +
            " expSolFilename VARCHAR(300)," +
            " variance DOUBLE" +  ");" ;

    String headingsTable = "id,filename,expSolFilename, variance";

    try
    {
        stmt = conn.createStatement();

        stmt.execute(createtextTable);
        setTableStmt = "SET TABLE " + “MolSet” + " SOURCE " +
            '"' + TABLES[0] + ".csv;ignore_first=true" + '"';
        stmt.execute(setTableStmt);

        headingStmt = "SET TABLE " + “MolSet” + " SOURCE HEADER " +
            '"' + headingsTable + '"';
        stmt.execute(headingStmt);
    }
    catch( SQLException sqle )
    {
        return false;
    }


    return true;
}

这会导致sql错误: 语句[SET table MolSet source HEADER]中的文本表源字符串无效

我希望你能帮忙,即使是要证实这是不可能的。谢谢 乔斯林


共 (2) 个答案

  1. # 1 楼答案

    此SQL文件用于从表生成CSV文本文件,并设置字段标题。它专门针对HSQLDB(版本1.8.1.3)

    数据库DL和文档的网站是HSQLDB。组织

    我希望有帮助

      ========================
      MAKE TABLE TEXT_TABLE_01
      ========================
    
    DROP TABLE TEXT_TABLE_01 IF EXISTS;
    
    CREATE TEXT TABLE TEXT_TABLE_01
        ( ID_NUMBER  INTEGER
        , FIRST_NAME VARCHAR(30)
        , LAST_NAME  VARCHAR(30)
        , DEAR_      VARCHAR(50)
        )
    ;
    
    SET TABLE TEXT_TABLE_01 SOURCE "TEXT_TABLE_01.TXT;ignore_first=true;fs=:";
    SET TABLE TEXT_TABLE_01 SOURCE HEADER "ID_NUMBER:FIRST_NAME:LAST_NAME:DEAR_";
    
    
    INSERT INTO TEXT_TABLE_01
            ( ID_NUMBER, FIRST_NAME, LAST_NAME, DEAR_ )
        SELECT
              ID_NUMBER, FIRST_NAME, SURNAME,   DEAR_
        FROM
            TMP_NON_PERSONAL
    ;
    
    SELECT * FROM TEXT_TABLE_01;
    
    SET TABLE TEXT_TABLE_01 SOURCE OFF;
    
      DELETE ALL TEXT FILES WHEN FINISHED ... OR BEFORE STARTING ...
    
  2. # 2 楼答案

    源和源标题字符串必须用单引号括起来:

      SET TABLE MolSet SOURCE HEADER 'id,filename,expSolFilename,variance'
    

    你使用了双引号

    编辑:答案是最新版本。1.8之后的旧版本。x支持这一点,但可能需要双引号。标题和表格中的列数必须匹配。或者,您可以在数据库脱机时编辑文本源,并自己添加标题