我正在尝试使用此处提到的批量上传功能将三元组上传到Virtuoso:https://github.com/dbpedia/dbpedia-docs/wiki/Loading-Data-Virtuoso。有时批量上传有效,有时则无效。
所以这就是我所做的(我在CentOS机器上工作):
已下载/已安装Virtuoso(最新版本)
通过指定默认8890
文件,在端口virtuoso.ini
上启动了Virtuoso:
virtuoso -f virtuoso.ini
启动了它附带的iSQL解释器:
./isql 1111
加载批量上传功能(例如可在此处找到:https://github.com/mysema/rdfbean/blob/master/rdfbean-virtuoso/doc/rdfloader.sql):
LOAD rdfloader.sql
上传第一个三重文件(~500 Mb):
ld_dir('/path/to/dir1','*.gz','http://graph.1.com');
rdf_loader_run();
(让我们称之为交易1,它运作良好)
尝试将另一个文件加载到另一个图表
ld_dir('/path/to/dir2','*.gz','http://graph.2.com');
rdf_loader_run();
(让我们称之为交易2)
它不起作用,即使Virtuoso日志文件没有指向错误的来源,事务事件写入的SQL表(DB.DBA.LOAD_LIST
)也提到该行有问题16061:
37000 SP029: TURTLE RDF loader, line 16061: syntax error processed pending to here.
我相应地更正了文件,在iSQL解释器中输入了与事务2相同的命令:
ld_dir('/path/to/dir2','*.gz','http://graph.3.com');
rdf_loader_run();
(让我们称之为交易3)
现在没有任何反应。 DB.DBA.LOAD_LIST
甚至不包含该新交易。它只包含事务1和2。
有没有人知道引擎盖下发生了什么,以及为什么这里什么也没发生?
答案 0 :(得分:0)
仅供将来参考
在批量上传操作期间发生错误时,您需要先清除DB.DBA.LOAD_LIST表,然后再继续。
private static final String clearBulkLoadTbl = "DELETE FROM DB.DBA.load_list";
private void clearBulkLoadHistory() throws SQLException {
PreparedStatement clearBulkLoadTblStmt;
clearBulkLoadTblStmt = virt_conn.prepareStatement(clearBulkLoadTbl);
clearBulkLoadTblStmt.executeUpdate();
}
希望它有所帮助。