我是卡珊德拉的新成员。我正在使用Datastax的Cassandra PHP驱动程序。我试图创建具有多个插入的批处理语句。给定表格模型:
CREATE TABLE real_time_log (
du_id int,
tag_id int,
status int,
time_stamp bigint,
value float,
PRIMARY KEY ((du_id, tag_id), status, time_stamp)
)
我尝试通过两种方式插入以下值:
$batch = new Cassandra\BatchStatement();
$stmt = $this->cassandraDb->prepare('insert into real_time_log'
. ' (du_id, tag_id, status, time_stamp, value) '
. 'VALUES (?, ?, ?, ?, ?)');
foreach ($curData as $cData) {
$values = explode(',', $cData);
$stmtValues = array(
'du_id' => 11111,
'tag_id' => 22222,
'status' => (int) $values[2],
'time_stamp' => new Cassandra\Bigint($values[0]),
'value' => (double) $values[1]
);
$batch->add($stmt, $stmtValues);
}
$this->cassandraDb->executeAsync($batch);
这会产生错误:
PHP Fatal error: Uncaught exception 'Cassandra\Exception\InvalidArgumentException' with message 'Invalid value type'
与此同时,我尝试了一种更直接的方法,没有准备好声明:
$batch = new Cassandra\BatchStatement();
foreach ($curData as $cData) {
$values = explode(',', $cData);
$stmtValues = array(
11111,
22222,
(int) $values[2],
new Cassandra\Bigint($values[0]),
(double) $values[1]
);
$batch->add(new Cassandra\SimpleStatement('insert into real_time_log'
. ' (du_id, tag_id, status, time_stamp, value) '
. 'VALUES (' . implode(',', $stmtValues) . ')'));
}
$this->cassandraDb->executeAsync($batch);
这样一切都正常,但肯定会慢很多。也许有人能解释一下我正在做的准备好的陈述方法有什么问题?
提前谢谢你。
我已经执行了这个操作来插入一行,它运行得很好:
$glid = 12345;
$modid = 'mobile';
$sysdate = date("YmdHis");
$sql = "insert into user (USR_ID,modid,membersince) values (?,?,?)";
$par = array(new Cassandra\Bigint($glid),$modid,new Cassandra\Bigint($sysdate));
$statement = $db->prepare($sql);
$db->execute($statement, array(
'arguments' => $par
));
乍一看,它应该可以工作——您是否尝试过显式地向它传递一个< code>float(将< code>(double) $values[1]更改为< code > new Cassandra \ Float($ values[1]))?
我正在尝试使用timeuuid值执行准备好的语句,并获得“无效值类型”异常。 下面是代码: 我得到以下异常: "Cassandra\Exception\InvalidArgumentException:无效的值类型" 以下是表格方案: 我做错了什么? 我正在使用PECL卡桑德拉1.1.0和卡桑德拉2.0.15: 已安装与cassandra相关的软件包:cassandra20-2.0.15-1.no
问题内容: 引用MySQL INSERT手册-UPDATE也一样: 使用关键字DEFAULT可以将列明确设置为其默认值。这使编写INSERT语句(为少数几个列分配值)更加容易,因为它使您避免编写不完整的VALUES列表,该列表不包含表中每个列的值。否则,您将不得不写出与VALUES列表中的每个值相对应的列名列表。 简而言之,如果我写 插入新的一列,并将column2设置为其默认值(无论它是多少)。
用于cassandra的Datastax Java驱动程序(cassandra-driver-core 2.0.2)支持PreparedStatements以及QueryBuilder API。使用其中一种比另一种有什么特别的优势吗?缺点? 文档:http://www.datastax.com/documentation/developer/java-driver/2.0/common/drive
问题内容: 在mysqli准备好的语句中,NULL变成’‘(对于字符串)或0(对于整数)。我想将其存储为真正的NULL。有什么办法吗? 问题答案: 我知道这是一个旧线程,但是可以将真实的NULL值绑定到准备好的语句(请阅读this)。 实际上,您可以使用mysqli_bind_parameter将NULL值传递给数据库。只需创建一个变量并将NULL值(请参见手册页)存储到该变量并将其绑定即可。无论
我在使用DataStax php驱动程序1.0.0-rc和Cassandra 2.2.3的Prepared Statements时遇到了一个奇怪的错误。我在这一行遇到了一条异常: 我看到了这个错误: 下面是用于与Cassandra通信的类存根: 如果我将Simple Statemetn与标准select查询一起使用,它会起作用。 有什么建议吗?
我准备了以下语句,通过JDBC驱动程序将其发送到Oracle数据库: 但是,我希望使用相同的准备好的语句,通过提供通配符参数这样的东西来获取表中的所有行。我尝试了“*”和“”这样的字符串,但它总是不返回行。 是否存在用于获取所有行的此准备语句中的参数的值?