【问题标题】:How to handle blob field in Spring Batch?如何处理 Spring Batch 中的 blob 字段?
【发布时间】:2020-08-21 17:32:27
【问题描述】:

我需要从 DB 中读取一个 blob 列,然后将其放入一个文件中,反之亦然,使用 Spring Batch。 我该怎么做? 我正在使用 Spring Batch 从 DB 中读取数据并将其放入 CSV 文件中,反之亦然,但现在我还必须管理 blob 数据类型,当它存在时,我需要使用这些数据创建一个文件。

【问题讨论】:

    标签: spring spring-boot file spring-batch blob


    【解决方案1】:

    一种方法是使用 LobHandler。您可以使用 (getBlobAsBytes) 将 blob 获取为字节并将其转换为字符串,或者使用 (getBlobAsBinaryStream) 将其转换为 BinaryStream

    public class YourRowMapper implements RowMapper<YourObjectType> {
            @Override
            public YourObjectType mapRow(ResultSet resultSet, int i) throws SQLException {
    
                LobHandler lobHandler = new DefaultLobHandler();
                String value = new String(lobHandler.getBlobAsBytes(resultSet, "COLUMN_NAME"));
    
                return null;
            }
        }
    

    希望对你有帮助

    【讨论】:

    • 是的,我知道,但我不知道如何使用 blob whit spring batch。你说把这个blob转换成字符串,放到一个文件里?
    • 您是否尝试过将 JdbcCursorItemReader 作为您的阅读器,为它提供 rowMapper。而对于你的作家 FlatFileItemWriter?您的 BLOB 的大小是多少?
    • 单个BLOB的大小可以不同MB,所有blob的总大小也可以超过3GB。
    • 好的,然后尝试在 rowMapper 中使用 getInputStream 并将其设置在您的 Item 中,以及将 InputStream 写入文件的自定义编写器。
    【解决方案2】:

    一般你可以使用byte[]类型字段来呈现blob。它可以依赖于使用什么数据库。

    【讨论】:

      猜你喜欢
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多