如何使用 DAO 插入雪花变体字段?

2024-01-12

我有以下代码:

@RegisterMapper(MyEntity.ResultMapper.class)
@UseStringTemplate3StatementLocator
public interface MyDao {

    @Transaction(TransactionIsolationLevel.SERIALIZABLE)
    @SqlBatch("INSERT INTO mySchema.myTable (" +
        " id, entity_type, entity_id, flags " +
        " ) VALUES " +
        "(" +
        " :stepId , :entityType , :entityId,parse_json(:flags) " +
        ")")
    @BatchChunkSize(500)
    Object create( @BindBean List<MyEntity> entities );
}

正如您所看到的,我使用此 DAO 将实体列表批量插入到我的 Snowflake 表中。

问题是我无法插入标志列,这是一个变体。我努力了to_variant(:flags)目前parse_json(:flags),但是JDBI一直抛出以下错误:

net.snowflake.client.jdbc.SnowflakeSQLException: SQL 
compilation error:
Invalid expression [PARSE_JSON(?)] in VALUES clause 
[statement:"INSERT INTO mySchema.myTable ( id, entity_type, 
entity_id, flags  ) VALUES ( :stepId , :entityType , :entityId,
parse_json(:flags) )", located:"null", rewritten:"null",
arguments:{ positional:{}, named:{timeStamp:'null', 
entityType:MYENTITY,
flags:'{"client":"myClient","flow":"myFlow"}',stepId:null, 
entityId:'189643357241513', class:class myOrg.MyEntity}, finder:[]}]

我应该如何传递标志列中的值?以前有人尝试过吗?这flagsMyEntity 中的字段在我的控制范围内,我可以将其保留为 POJO 或字符串,以帮助我解决此问题。


See 评论 https://stackoverflow.com/questions/56784193/how-to-insert-into-a-snowflake-variant-field-using-a-dao/58513714#comment100177963_56784193黄健生的回答:

INSERT INTO T SELECT parse_json(:flag);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 DAO 插入雪花变体字段? 的相关文章

  • Snowflake - 如何检索当前正在执行的过程的名称?

    我想在 javascript 过程本身中访问 Snowflake 中当前执行的过程的名称并将其存储在变量中 当我询问 this 对象时 我可以在 Variant 返回中看到名称 但就 JSON 而言 我相信这是名称而不是值 并且我不确定如何
  • Snowflake date_trunc 从日期中删除时间

    我有雪花列 其中包含 yyyy mm dd hh MM ss 格式的日期 我使用下面的函数 date trunc DAY 2019 09 23 12 33 25 输出 2019 09 23 00 00 00 预计按照文档 https doc
  • 数据映射器、表数据网关(Gateway)、数据访问对象(DAO)和存储库模式之间有什么区别?

    我正在尝试温习我的设计模式技能 我很好奇这些模式之间有什么区别 所有这些看起来都是同一件事 封装特定实体的数据库逻辑 因此调用代码不了解底层持久层 根据我的简短研究 它们通常都实现标准 CRUD 方法并抽象出特定于数据库的细节 除了命名约定
  • 无法使用 pandas to_sql() 方法将数据插入 Snowflake 数据库表

    我有一个数据库SFOPT TEST在我的雪花实例上 数据库有两种模式AUDITS and PARAMS 架构AUDITS有一个使用 SQLAlchemy 创建的表declarative base class AccountUsageLogi
  • net.snowflake.client.jdbc.SnowflakeChunkDownloader :等待下载 #chunk0 超时

    等待下载块错误超时 Snowflake JDBC 驱动程序版本 3 13 18 遇到错误 net snowflake client jdbc SnowflakeSQLException JDBC driver internal error
  • Dbt:在默认位置未找到 .dbt 文件夹

    我正在创建 dbt 项目 但是运行命令时dbt init
  • Hibernate 中的通用 DAO 模式

    在处理 Hibernate 时 我们遵循 Hibernate Doc 中提到的通用 Hibernate DAO 模式 因此 我们目前正在维护两个并行的层次结构 1 对于接口 2 实施 因此 如果我们以这种方式工作 即使除了标准持久性方法之外
  • 取消透视从另一个表中获取的列

    我有超过 500 个列需要在取消透视时使用 select col1 col2 col3 from select from table unpivot col3 for col2 in value value2 value788 因此 我没有
  • 测试 DAO 时出错:sun.reflect.generics.reflectiveObjects.TypeVariableImpl 无法转换为 java.lang.Class

    我对 Spring Hibernate 非常陌生 我正在运行测试来查看我的 DAO 是否正常工作 我收到以下错误 在谷歌搜索时会产生很多不同的答案 主要是拼写错误 我已经检查过 我希望你能帮我解决这个问题 java lang Illegal
  • 两个类里面的代码几乎重复

    此时此刻 我有两节课 UserHibernateDao and TicketHibernateDao import java util List import org springframework orm hibernate3 suppo
  • 雪花 - 横向不能位于连接的左侧

    我有一个变体数据类型 我正在对其执行横向展平 但随后我需要左连接其中一个 json 元素 以从 Snowflake 中的另一个关系表中查找相应 ID 的值 当我这样做时 它会给我错误 横向视图不能位于连接的左侧 这是没有意义的 因为如果我不
  • 雪花不旋转

    我需要转置一个表 其中column1 是实体的名称 column2 到column366 是一年中包含美元金额的日期 表 select语句 输出结果都给定了 以下 问题 此语法要求我创建一个逗号分隔的列列表 基本上是 365 个日期 并在
  • 如何使用 JDBI 的 Sql 对象 API 在运行时创建动态 Sql 查询?

    我已经将现有项目从 jdbc 迁移到 jdbi 并且充分利用了 jdbi 漂亮的 SQL 对象 API 我们使用的是mysql 虽然 SQL 对象 API 可以构造在编译时已知的已处理查询 但我找不到在运行时生成查询的方法 具体来说 我希望
  • 关于雪花中 util_db 的任何好的文档

    我正在寻找有关雪花中 util db 用途的信息 该帐户随数据库一起提供 找不到这方面的好的文档 UTIL DB 是初始帐户设置的一部分 包含一些用于加载数据的示例文件格式 这不使用任何数据存储 因此不会对您的帐户产生存储费用 如果需要 帐
  • 雪花中有保存或加载工作表的选项吗?

    雪花中有保存或加载工作表的选项吗 或者将工作表下载到本地并从本地加载 我的意思不是通过剪贴板将其粘贴到某些文本编辑器并保存这样的选项 Snowflake 会自动保存您的工作表 您还可以将脚本从本地加载到工作表 但是无法下载工作表 Saved
  • java中的DAO模式什么是业务对象

    直接来自this http www oracle com technetwork java dataaccessobject 138824 htmlOracle 关于 J2EE DAO 模式的文章 事实上 除了业务对象 参与者 他们这么称呼
  • Spring 会话范围的 bean 作为原型 bean 中的依赖项?

    我多次阅读了有关这个主题的 spring 文档 但有些事情我仍然不清楚 文件指出 例如 如果要将 HTTP 请求作用域 bean 注入到另一个 bean 中 则必须注入 AOP 代理来代替该作用域 bean 也就是说 您需要注入一个代理对象
  • Spring Java 中许多 DAO 的策略

    我们现有的项目中有许多 DAO 目前没有接口 但这可能会改变 我们没有为每个 DAO 类连接一个 Spring 管理的 bean 并将它们注入到服务层 而是有一个类似这样的 DAO 工厂 public class DAOFactory pr
  • 捕获 select 语句中除表中的一列之外的所有列

    有没有办法像我们一样选择除 Snowflake 中的一列之外的所有列bigquery https cloud google com bigquery docs reference standard sql query syntax sele
  • MERGE 命令导致序列号出现间隙

    我试图利用 MERGE 命令来填充 Snowflake 中的维度 为了实现代理键 我创建了一个默认为序列号的列 每当插入新行时该序列号就会自动递增 我在其他数据仓库平台上尝试了类似的方法 但从未引起任何问题 但是 我注意到 每当我在 Sno

随机推荐