首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在QuestDB中存储数据类型u64

在QuestDB中存储数据类型u64
EN

Stack Overflow用户
提问于 2021-04-12 18:42:01
回答 1查看 51关注 0票数 1

显然,Rust Postgres库不允许在QuestDB中存储数据类型u64。因此,我试图将其作为字符串偷偷绕过已准备好的语句:

INSERT INTO table_x VALUES ($1,cast($2 as LONG))

然而,当我为$2传递一个字符串时,这也会导致我的错误:

Error { kind: ToSql(1), cause: Some(WrongType { postgres: Numeric, rust: "&alloc::string::String" }) }

有谁知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2021-04-12 22:19:16

下面的代码在as中运行良好

代码语言:javascript
复制
use postgres::{Client, NoTls, Error};

fn main() -> Result<(), Error> {
    let mut client = Client::connect("postgresql://admin:quest@localhost:8812/qdb", NoTls)?;
    
    // Basic query
    client.batch_execute(
        "CREATE TABLE IF NOT EXISTS rust (name STRING, value long);",
    )?;

    // Parameterized query
    let name = "abc";
    let uval: u64 = 9223372036854773000;
    let val = uval as i64;
    
    client.execute(
        "INSERT INTO rust (name, value) VALUES ($1,$2)",
        &[&name, &val],
    )?;

    println!("import finished");
    Ok(())
}

注意:i64u64的区别如下:

  • i64 is +/- 9223372036854775808
  • u64 unsigned int is 0-18446744073709551615

long的QuestDB中的数据类型是64位有符号整数(i64),因此如果您的值超过9223372036854775808,您将需要不同的处理。

edit有关详细信息,请参阅以下资源:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67056954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档