无法使用批量上传功能将三元组批量上传到 virtuoso graph
Cannot bulk upload triples to virtuoso graph using the bulk upload functions
我正在尝试使用此处提到的批量上传功能将三元组上传到 Virtuoso:https://github.com/dbpedia/dbpedia-docs/wiki/Loading-Data-Virtuoso。有时批量上传有效,有时无效。
这就是我所做的(我在 CentOS 机器上工作):
已下载/安装 Virtuoso(最新版本)
通过指定默认 virtuoso.ini
文件在端口 8890
上启动 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 table 交易事件被写入到(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。
有没有人知道引擎盖下发生了什么以及为什么这里没有任何反应?
仅供日后参考
当批量上传操作发生错误时,您需要清除DB.DBA.LOAD_LIST table 才能继续。
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();
}
希望对大家有所帮助。
我正在尝试使用此处提到的批量上传功能将三元组上传到 Virtuoso:https://github.com/dbpedia/dbpedia-docs/wiki/Loading-Data-Virtuoso。有时批量上传有效,有时无效。
这就是我所做的(我在 CentOS 机器上工作):
已下载/安装 Virtuoso(最新版本)
通过指定默认 virtuoso.ini
文件在端口 8890
上启动 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 table 交易事件被写入到(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。
有没有人知道引擎盖下发生了什么以及为什么这里没有任何反应?
仅供日后参考
当批量上传操作发生错误时,您需要清除DB.DBA.LOAD_LIST table 才能继续。
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();
}
希望对大家有所帮助。