无法使用批量上传功能将三元组批量上传到virtuoso图表

时间:2015-12-04 15:57:32

标签: transactions rdf graph-databases virtuoso bulk-load

我正在尝试使用此处提到的批量上传功能将三元组上传到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。

有没有人知道引擎盖下发生了什么,以及为什么这里什么也没发生?

1 个答案:

答案 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();
}

希望它有所帮助。