将CSV文件导入HSQLDB

将CSV文件导入HSQLDB,csv,hsqldb,Csv,Hsqldb,我正在尝试将一组CSV文件转换为HSQLDB数据库。我的第一次尝试是启动DatabaseManagerSwing并执行以下代码: * *DSV_COL_SPLITTER = ; \mq /home/michael/workspaces/rds-surveyor/lt/it/NAMES.DAT commit; 将被拒绝,并显示错误消息: java.sql.SQLSyntaxErrorException: unexpected token: * 为了从HSQLDB获得至少一些响应,我尝试删除第一

我正在尝试将一组CSV文件转换为HSQLDB数据库。我的第一次尝试是启动
DatabaseManagerSwing
并执行以下代码:

* *DSV_COL_SPLITTER = ;
\mq /home/michael/workspaces/rds-surveyor/lt/it/NAMES.DAT
commit;
将被拒绝,并显示错误消息:

java.sql.SQLSyntaxErrorException: unexpected token: *
为了从HSQLDB获得至少一些响应,我尝试删除第一行,但这只会产生一个稍微不同的错误:

java.sql.SQLSyntaxErrorException: unexpected token:
然后我遇到了sqltool,在克服了它的各种缺陷(您需要sqltool JAR,以及同一路径中或类路径中某个地方的同一版本的hsqldb JAR)之后,我在这里运行了完整的代码。第一行按预期处理,但
\mq
命令失败,并出现类似错误:

SEVERE  Cause: SQLSyntaxErrorException: unknown token: 
我尝试导入的文件如下所示(显示的前几行):


这里出了什么问题?

您试图执行的命令属于SqlTool,它是HSQLDB的一个单独的命令行客户端,位于zip包中的一个单独的jar中。指南如下:


在DatabaseManagerSwing中,可以使用不同的方法为CSV文件创建文本表

由于其他原因,我现在放弃了导入路径,而是在我的应用程序中进行CSV导入

使用从复制的CSV文件的第一行生成的
CREATE TABLE
语句时,我收到了与SQL代码相同的错误消息。使用十六进制编辑器对SQL文件进行更仔细的分析后发现,粘贴的列名开头有一个字节顺序标记(BOM)。删除BOM后,SQL代码将在没有任何进一步唠叨的情况下运行

我记得我尝试导入的一些文件是从BOM开始的(这让我之前很头疼)——因此我假设BOM是HSQLDB一直抱怨的“未知标记”。由于BOM表是非打印字符,因此它解释了错误消息中未显示标记的原因


经验教训:消息中未显示字符的“无效令牌”错误可能是由于错误输入中的BOM、控制字符或其他非打印内容造成的。一个十六进制编辑器将揭示这一点。

谢谢,我已经实现了
**DSV\u COL\u SPLITTER=stuff requires
sqltool
并相应地编辑了我的问题。我也读过关于文本表的内容,但这不是我想要的–文本表将引用CSV文件进行存储,而我想导入数据库中的数据并删除CSV文件。创建文本表后,您可以将数据复制到另一个数据库表并释放CSV。啊,我没想到这一点。如果不是因为我现在选择了一条不同的道路的话,提高投票率本来会有帮助的。无论如何谢谢你!
CID;LID;NID;NAME;NCOMMENT
25;1;165;Europa;
25;1;167;Italia;
25;1;169;Abruzzo;
25;1;171;Chieti;
25;1;173;Passo Di Lanciano;
25;1;175;Valico Castiglione Messer Marino;
25;1;177;Valico Della Forchetta;