jena 开发之 mysql数据导入
2015-04-21 00:00
330 查看
摘要: jena将数据导入mysql
最近公司需要搞sparql,让我做c++开发情何以堪,第一次搞JAVA,有错误还请大家指正出来,好了不废话了,进入正题。
最新版的jena通过SDB的方式访问并存储三元组数据。
要使用mysql需要下载JDBC驱动,可以前往mysql的官网下载http://dev.mysql.com/downloads/connector/j/
如果使用SDB的方式操作数据库的话,我们需要在两者之间建立一个关联
这个关联的类可以使用Store,一个关联只能创建一个Store
第一步 建立连接:
在这段代码中,首先我们创建一个连接标识,三元组<主,谓,宾>or<s,p,o>之间使用哈希标识(LayoutType.LayoutTripleNodesHash)
数据库类型为mysql。看下图可以更好的理解 何为 hash关联。
其次是加载一个mysql的驱动;
最后我们创建连接,并使用工厂类 SDBFactory创建Store与jena之间建立关联。
第二步 导入数据:
如果是第一次访问mysql数据库的话(数据库中没有任数据),我们需要创建一个格式化好的表,我们必须保证这段代码只能执行一次,如果数据库中存在数据的话,这段代码将会有异常抛出。
紧接着我们可以导入数据,方式可以使用 Graph、model等,这里我使用了graph的方式
第三步 关闭连接:
完整用例:
最近公司需要搞sparql,让我做c++开发情何以堪,第一次搞JAVA,有错误还请大家指正出来,好了不废话了,进入正题。
最新版的jena通过SDB的方式访问并存储三元组数据。
要使用mysql需要下载JDBC驱动,可以前往mysql的官网下载http://dev.mysql.com/downloads/connector/j/
如果使用SDB的方式操作数据库的话,我们需要在两者之间建立一个关联
这个关联的类可以使用Store,一个关联只能创建一个Store
第一步 建立连接:
// 连接标识符 StoreDesc desc = new StoreDesc(LayoutType.LayoutTripleNodesHash,DatabaseType.MySQL); // 加载mysql驱动 JDBC.loadDriverMySQL(); SDBConnection conn = new SDBConnection("jdbc:", "admin", "admin"); Store store = SDBFactory.connectStore(conn, desc);
在这段代码中,首先我们创建一个连接标识,三元组<主,谓,宾>or<s,p,o>之间使用哈希标识(LayoutType.LayoutTripleNodesHash)
数据库类型为mysql。看下图可以更好的理解 何为 hash关联。
其次是加载一个mysql的驱动;
最后我们创建连接,并使用工厂类 SDBFactory创建Store与jena之间建立关联。
第二步 导入数据:
如果是第一次访问mysql数据库的话(数据库中没有任数据),我们需要创建一个格式化好的表,我们必须保证这段代码只能执行一次,如果数据库中存在数据的话,这段代码将会有异常抛出。
// 初次连接需要创建三元组数据库格式表 if( StoreUtils.isFormatted(store) == false) { System.out.println("create table format and truc data"); store.getTableFormatter().create(); // store.getTableFormatter().truncate();// 清空数据 }
紧接着我们可以导入数据,方式可以使用 Graph、model等,这里我使用了graph的方式
// 导入测试数据 GraphSDB graph = new GraphSDB(store); Node node1 = Node.createURI("http://bar"); Node node2 = Node.createURI("http://car"); Node node3 = Node.createURI("http://dar"); graph.add(new Triple(node1,node2,node3));
第三步 关闭连接:
graph.close(); store.close(); conn.close();
完整用例:
public class JenaExe {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
try
{
// 连接标识符 StoreDesc desc = new StoreDesc(LayoutType.LayoutTripleNodesHash,DatabaseType.MySQL); // 加载mysql驱动 JDBC.loadDriverMySQL(); SDBConnection conn = new SDBConnection("jdbc:", "admin", "admin"); Store store = SDBFactory.connectStore(conn, desc);
// 初次连接需要创建三元组数据库格式表 if( StoreUtils.isFormatted(store) == false) { System.out.println("create table format and truc data"); store.getTableFormatter().create(); // store.getTableFormatter().truncate();// 清空数据 }
// 导入测试数据 GraphSDB graph = new GraphSDB(store); Node node1 = Node.createURI("http://bar"); Node node2 = Node.createURI("http://car"); Node node3 = Node.createURI("http://dar"); graph.add(new Triple(node1,node2,node3));
graph.close(); store.close(); conn.close();
}catch(SDBException err)
{
System.out.println("SDB Exception:"+err.getMessage());
}
catch(SQLException err)
{
System.out.println("SQL Exception:"+err.getMessage());
}
}
}
相关文章推荐
- 【Android】Parse开发笔记(2)—— 从Mysql导入数据到Parse Data
- node开发后将本地mysql数据导入到服务器mysql
- mysql 开发进阶篇系列 50 表的数据导入(load data infile,mysqlimport )
- mysql数据的导入,导出
- Linux下Mysql数据的导入导出
- Java(随机往mysql中导入一亿条数据)
- mysql 增量数据导出导入
- Mysql导入数据load data infile
- MySQL 之 LOAD DATA INFILE 快速导入数据
- Mysql5.6版本导出sql文件数据导入到5.7版本出现的问题
- Navicat工具Excel表格数据导入mysql
- mysql导入数据 提示 The MySQL server is running with the --secure-file-priv
- Mysql 数据导入导出
- 分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节
- 从0到1学习并完成mysql导入大量数据
- 解决Solr对Mysql做数据导入时内存溢出的问题
- dede数据库文件导入失败的可能原因是数据表前缀不同,这里的失败指的是mysql添加了数据,但后台不显示
- Access数据导入MySQL数据导不入
- MySQL导入数据错误error: 13 及解决办法
- mysql从csv文件导入数据时提示int类型出现' '(空字符串)