Java 将列标题插入hsqldb文本文件
我正在修改其他人的Java代码,一边学习Java::-。我正在编写hsqldb文本文件,我希望最终的文件有一个“标题”行,这样它们就可以更容易地理解为纯文本。hsqldb有一个“ignore_first=true”开关用于读取此类文件,但我找不到写入该行的方法。它可能不存在,但文档中有一个对源标题的诱人引用。有人知道怎么用吗? 以下是我尝试过的一个简化示例:Java 将列标题插入hsqldb文本文件,java,csv,hsqldb,Java,Csv,Hsqldb,我正在修改其他人的Java代码,一边学习Java::-。我正在编写hsqldb文本文件,我希望最终的文件有一个“标题”行,这样它们就可以更容易地理解为纯文本。hsqldb有一个“ignore_first=true”开关用于读取此类文件,但我找不到写入该行的方法。它可能不存在,但文档中有一个对源标题的诱人引用。有人知道怎么用吗? 以下是我尝试过的一个简化示例: String createtextTable = "CREATE TEXT TABLE MolSet (" +
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]中的文本表源字符串无效
我希望你能帮忙,即使是要证实这是不可能的。谢谢
Jocelyn源和源标题字符串必须用单引号括起来:
SET TABLE MolSet SOURCE HEADER 'id,filename,expSolFilename,variance'
您使用了双引号
编辑:答案是最新版本。自1.8.x以来的旧版本支持此功能,但可能需要双引号。标题和表中的列数必须匹配。或者,您可以在数据库脱机时编辑文本源并自己添加标题。此SQL文件用于从表生成CSV文本文件,还可以设置字段标题。它特定于HSQLDB(版本1.8.1.3) 数据库DL和文档的网站是HSQLDB.ORG 我希望有帮助
-- ========================
-- 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 ...
谢谢,尝试更改为单引号-收到相同的错误消息。在sourceforge.net/p/hsqldb/discussion/73674/thread/4a01f5f9上的讨论中,有人问了一个类似的问题(没有令人满意的答案),答案使用了双引号。Jocelyn我问了两个星期了唯一的答案不是真的。我想这意味着这是不可能的。或者我可能需要安装最新的hsqldb,而不是与我的程序打包的hsqldb,但这有它自己的问题