繁体   English   中英

如何从Oracle NoSQL表获取所有行?

[英]How to get all rows from Oracle NoSQL table?

如何使用Java中的TableAPI从Oracle NoSQL表中获取所有行? 我可以通过主键值获取记录。 例:

    TableAPI tableH = kvstore.getTableAPI();
    Table myTable = tableH.getTable("myTable");
    PrimaryKey key = myTable.createPrimaryKey();
    key.put("item", "Hat");

    List<Row> myRows = null;
    try {
        myRows = tableH.multiGet(key, null, null);
    } catch (ConsistencyException ce) {
    } catch (RequestTimeoutException re) {
    }
    for (Row theRow: myRows) {
        String itemType = theRow.get("item").asString().get();
    }
    System.out.println(itemType);

但是我无法获得主键值。

要修改您的示例,您可以通过为表使用空的PrimaryKey并使用TableAPI.tableIterator()方法之一来获取所有行。 关于示例的注释TableAPI.getTable()将执行远程调用,因此应该隐藏并重用Table句柄。

TableAPI tableH = kvstore.getTableAPI();
/* 
 * get the Table, but be careful about doing this frequently,
 * as it performs a remote call.
 */
Table myTable = tableH.getTable("myTable");
PrimaryKey key = myTable.createPrimaryKey();

try {

    /* create and use an iterator on the Row value */
    TableIterator<Row> rowIter = tableH.tableIterator(key, null, null);
    while (rowIter.hasNext()) {
        Row row = rowIter.next();
        /* do something */
    }

    /* 
     * Or...
     * create and use an iterator on the PrimaryKey values.
     * This is much faster than fetching the data as well if
     * you only need fields in the primary key.
     */
    TableIterator<PrimaryKey> keyIter =
              tableH.tableKeysIterator(key, null, null);
    while (keyIter.hasNext()) {
        PrimaryKey key = rowIter.next();
        /* do something */
    }
} catch (FaultException fe) {
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM