当前位置: 首页 > 知识库问答 >
问题:

使用数据堆栈 Java 驱动程序插入到列系列中?

何骞尧
2023-03-14

如果我在卡桑德拉创建了一个这样的列系列,就像以前一样,我使用的是基于Thrift的客户端。

create column family USER
with comparator = 'UTF8Type'
and key_validation_class = 'UTF8Type'
and default_validation_class = 'BytesType'

那么,我可以使用具有异步/批处理写入功能的DatastaxJava驱动程序插入上述列系列吗?

我将使用INSERT语句插入到上面的列族中?是否可以使用Datastax Java驱动程序?

我的印象是,我只能使用Datastax Java驱动程序插入基于CQL的表,而不能插入列族设计表中。。。

共有2个答案

周翼
2023-03-14

是,使用以下代码:

String query = "INSERT INTO " + keyspace_name + "." + column_family + " (" + column_names + ") VALUES (" + column_values + ");";
statement = session.prepare(query);
boundStatement = new BoundStatement(statement);

boundStatement.setString(0, key);
boundStatement.setString(1, subColNames[k]);
boundStatement.setMap(2, colValues);
session.execute(boundStatement);
郑俊彦
2023-03-14

TL;DR
算是吧,但是最好创建一个基于cql3的表,并从那里继续。

首先,要清楚地了解正在发生的事情,请使用 cqlsh 中的描述命令:

cqlsh> describe COLUMNFAMILY "USER";

CREATE TABLE "USER" (
  key text,
  column1 text,
  value blob,
  PRIMARY KEY (key, column1)
) WITH COMPACT STORAGE AND
  bloom_filter_fp_chance=0.010000 AND
  caching='KEYS_ONLY' AND
  comment='' AND
  dclocal_read_repair_chance=0.000000 AND
  gc_grace_seconds=864000 AND
  index_interval=128 AND
  read_repair_chance=0.100000 AND
  replicate_on_write='true' AND
  populate_io_cache_on_flush='false' AND
  default_time_to_live=0 AND
  speculative_retry='NONE' AND
  memtable_flush_period_in_ms=0 AND
  compaction={'class': 'SizeTieredCompactionStrategy'} AND
  compression={'sstable_compression': 'LZ4Compressor'};

然后,您可以使用cqlh(我使用cqlsh)构建插入语句:

cqlsh:test> insert into test."USER" (key, column1, value) VALUES ('epickey', 'epic column 1 text', null);

但是,如果您进行选择...

cqlsh:test> SELECT * FROM test."USER" ;

(0 rows)

完成此操作后,请返回 CLI:

[default@unknown] use test;
Authenticated to keyspace: test
[default@test] list USER;
Using default limit of 100
Using default cell limit of 100
-------------------
RowKey: epickey

1 Row Returned.
Elapsed time: 260 msec(s).

我将使用的最后一个工具是 sstable2json(从稳定中获取所有数据并...把它变成一个 json 表示)

对于上面插入的USER cf,我得到了以下内容:

[
{"key": "657069636b6579","columns": [["epic column 1 text","5257c34b",1381483339315000,"d"]]}
]

所以数据就在那里,但是你不能通过cql访问它。

注意:这一切都是使用 C* 2.0 和 cqlsh 4.0 (cql3) 完成的

 类似资料:
  • 我们正在尝试使用DataStax驱动程序将CSV文件中的数据插入Cassandra。有哪些方法可以做到这一点? 我们目前使用运行cqlsh从CSV文件加载。

  • 如果我的ID是连续的,我如何使用Liquibase为PostgreSQL进行插入。我尝试以下几点: 我试着 错误是: 错误:列“id”中的空值违反了非空约束

  • 本文向大家介绍mongodb使用c#驱动数据插入demo,包括了mongodb使用c#驱动数据插入demo的使用技巧和注意事项,需要的朋友参考一下 Mongodb提供了多种开发语言的驱动,java,python,c++,c# 等,这里选用c#驱动作为测试; 首先上mongo官网下载驱动。Ps:官方网站经常连接不顺利。 还不如直接在vs的nuget管理包中搜索mongoDB.driver. 需要引入

  • 问题内容: 最终用户(开发人员或生产人员)可以推荐一个Sql驱动程序包,最好使用“ database / sql”包。我对Postgres,ODBC,MySql(以及可能用于高容量的其他商品(即,不是Sqlite)的其他商品)感兴趣,这些商品最好可在Windows和/或Linux(最好同时使用)上使用。令我感兴趣的是,它可能需要最近进行了更新/维护,并且必须与最新的Go版本一起使用。效率(吞吐量)

  • 问题内容: 我刚刚将100万条记录插入到一​​个具有五列的简单sqlite表中。使用jdbc驱动程序在Java中花费了18个小时!我在python2.5中做了同样的事情,花了不到一分钟。选择查询的速度似乎不错。我认为这是jdbc驱动程序的问题。 Java中是否有更快的sqlite3驱动程序? 插入大量行的速度对于我的模式迁移脚本很重要,如果不需要,我宁愿不必使用外部脚本来进行迁移。 编辑:用con

  • 问题内容: 我有像这样的JSON: 我需要能够删除itemList的记录之一。我已经完成以下工作: } 这种方法行不通。但是,当我将BasicDBObject与$ pull方法一起使用时,它可以正常工作!这些方法之间有什么区别! 问题答案: 如果通常要删除数组,请使用以下命令: