将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获得一些响应,我尝试删除第一行,但这给出了一个略有不同的错误:

java.sql.SQLSyntaxErrorException: unexpected token:

然后,我遇到了sqltool,并克服了它的各种陷阱(在同一路径或您的类路径中的某个位置,您需要sqltool JAR以及相同版本的hsqldb JAR),然后在此处运行了完整的代码。第一行已按预期处理,但\mq命令失败,并显示类似错误:

SEVERE  Cause: SQLSyntaxErrorException: unknown token: 

我尝试导入的文件如下所示(显示的前几行):

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;

这是怎么了

用户名

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

使用CREATE TABLE从复制的CSV文件的第一行构建语句时,我的SQL代码收到相同的错误消息。使用十六进制编辑器对SQL文件进行更仔细的分析后发现,在粘贴的列名称的开头有一个字节顺序标记(BOM)。消除BOM后,SQL代码将运行,而无需进行进一步的操作。

我记得我要导入的某些文件以BOM表开头(这让我很头疼)–因此,我认为BOM表是HSQLDB一直在抱怨的“未知令牌”。由于BOM是非打印字符,因此可以解释为什么错误消息中没有显示令牌。

获得的经验教训:消息中没有显示任何字符的“无效令牌”错误很可能是由于有问题的输入中的BOM,控制字符或其他非打印内容所致。十六进制编辑器将显示该信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章