如何解决TEIID 中的大 Blob 插入/更新
我正在尝试插入一个大 blob,插入时的转换器实现在 DB 中写入一行并将 blob 内容保存在一个文件中。
问题是当我想插入大量数据时,我想通过 JDBC 客户端流式传输数据,以便在我的客户端上不会填满内存,并且数据会流向服务器(翻译器)
>为此,我想出了一个发送 Blob 引用的解决方案,但似乎只支持读取 Blob 引用,以下部分来自一些 TEIID older version documentation:
“但是,JDBC API 当前不会在插入或更新时流式传输大对象。因此,Teiid JDBC API 将读取所有数据并将其以单个物化值的形式传回连接器。”
在 latest version documentation 中我找不到类似的声明
我的问题是插入时是否支持流式传输?
我将感谢您提供任何其他解决方案来处理用于插入/更新的大型 blob
以下是我的更新代码
PipedInputStream inStream = new PipedInputStream(1024);
PipedOutputStream outStream = new PipedOutputStream(inStream);
try (PreparedStatement pStmtUpdate = conn.prepareStatement(
"update Entity set data = ? where id = ?")) {
pStmtUpdate.setBinaryStream(1,inStream);
pStmtUpdate.setString(2,id);
DataWriteWorker writeWorker = new DataWriteWorker(outStream,true);
writeWorker.start();
//I am using a separate thread to write data,//my main thread keeps on waiting at executeUpdate uptil the entire writing to output has fininshed using the thread above
pStmtUpdate.executeUpdate();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。