前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JDBC读取SciDB数据

JDBC读取SciDB数据

作者头像
卡尔曼和玻尔兹曼谁曼
发布2019-01-22 10:38:58
6330
发布2019-01-22 10:38:58
举报
文章被收录于专栏:给永远比拿愉快

SciDB一个典型的Array Database,官网地址:http://www.paradigm4.com/,提供了C++,Java,Python和R的接口。

下面说说如何使用Java的接口(JDBC)读取SciDB数据: 我使用的SciDB版本是14.12,JDK版本为1.7。 依赖的JDBC的jar包可从https://downloads.paradigm4.com/client/14.12/jdbc/下载,主要用到的jar包括scidb4j.jar和iquery.jar。 此外,还需要Google的protolib库,版本为2.4.1。

代码如下:

代码语言:javascript
复制
package cn.tzy.scidb;

import org.scidb.jdbc.IResultSetWrapper;

import java.sql.*;

public class Main {

    public static void main(String[] args) {
        try {
            Class.forName("org.scidb.jdbc.Driver");
        } catch (ClassNotFoundException ex) {
            System.out.println("Driver is not in the CLASSPATH -> " + ex);
        }

        String iqueryHost = "127.0.0.1";
        String iqueryPort = "1239";
        String arrayName = "landsat_wuhan";

        try {
            String url = "jdbc:scidb://" + iqueryHost + ":" + iqueryPort + "/";
            Connection conn = DriverManager.getConnection(url);
            ResultSet res;
            try (Statement st = conn.createStatement()) {
                res = st.executeQuery("select * from " + arrayName);
            }
            ResultSetMetaData meta = res.getMetaData();
            System.out.println("Source array name: " + meta.getTableName(0));
            System.out.println(meta.getColumnCount() + " columns:");
            IResultSetWrapper resWrapper = res.unwrap(IResultSetWrapper.class);

            // 输出Array的元数据
            for(int i = 1; i <= meta.getColumnCount(); ++i) {
                System.out.println(meta.getColumnName(i) + " - " + meta.getColumnTypeName(i) + " - is attribute:" + resWrapper.isColumnAttribute(i));
            }

            int count = 0;
            // 输出Array的前10行数据
            while(!res.isAfterLast() && count < 10) {
                System.out.println(res.getLong(1) + " " + res.getLong(2) + " " + res.getShort(3));
                res.next();
                count++;
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        }
    }
}

输出结果如下:

代码语言:javascript
复制
Source array name: landsat_wuhan@1
3 columns:
y - int64 - is attribute:false
x - int64 - is attribute:false
band1 - uint8 - is attribute:true
0 0 0
0 1 0
0 2 0
0 3 0
0 4 0
0 5 0
0 6 0
0 7 0
0 8 0
0 9 0
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年10月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档