文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Gorm:将数组列批量插入 ClickHouse

2024-04-04 23:11

关注

Golang不知道大家是否熟悉?今天我将给大家介绍《Gorm:将数组列批量插入 ClickHouse》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

我想将数据批量插入到我们的 clickhouse 数据库中。使用gorm,我可以轻松使用

type audit struct{
 field1 string `json:"field1"`,
 field2 string `json:"field2"`, 
}

chdb.table(tablename).createinbatches(audits, 5)

但是,如果audit包含如下数组字段,则其他字段的数据仍然会保存在数据库中。只有带有数组的字段(如下field1)不会被保存。

type audit struct{
 field1 []string `json:"field1"`,
 field2 string   `json:"field2"`, 
}

chdb.table(tablename).createinbatches(audits, 5)

错误:[错误]不支持的数据类型:&[]

只有当我准备一份声明并保存数据时,它才有效。但是,在这种情况下,它不再是批量插入

sqlDB, err := db.DB()
tx, err := sqlDB.Begin()
stmt, err := tx.PrepareContext(ctx, `insert into audit_table (field1, field2) values (?, ?)`)
_, err = stmt.ExecContext(ctx, clickhouse.Array(audit.field1), audit.field2)
err = tx.Commit()

有人可以帮我解决这个问题吗?如何将数组数据批量插入 clickhouse 列?


正确答案


您可能需要 clickhouse.array 类型来插入 clickhouse.array

type audit struct{
 field1 clickhouse.array `json:"field1"`,
 field2 string           `json:"field2"`, 
}

audits := audit{
  field1: clickhouse.array([]string{"one", "three"}),
  field2: "two"
}

chdb.table(tablename).createinbatches(audits, 5)

这对我不起作用,我需要使用正确的字段标签更新我的结构,如下所示

type user struct {
    timestamp    time.time `gorm:"precision:6"`
    name         string    `gorm:"type:lowcardinality(string)"`
    age          int8
    defaultvalue string `gorm:"default:hello world"`
    elapsed      time.duration
    nullableint  *int8    `gorm:"type:nullable(int8)"`
    array        []string `gorm:"type:array(string)"`
}

并且可以像这样轻松地进行批量插入

// Batch Insert
    user1 := User{Timestamp: time.Now(), Age: 12, Name: "Bruce Lee", Arraa: []string{"hello", "ne"}}
    user2 := User{Timestamp: time.Now(), Age: 13, Name: "Feynman", Arraa: []string{"no", "me"}}
    user3 := User{Timestamp: time.Now(), Age: 14, Name: "Angeliz"}
    var users = []User{user1, user2, user3}
    db.Create(&users)

以上就是《Gorm:将数组列批量插入 ClickHouse》的详细内容,更多关于的资料请关注编程网公众号!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯