gpt4 book ai didi

oracle - 将大 BLOB 传递给存储过程

转载 作者:行者123 更新时间:2023-12-01 23:59:16 24 4
gpt4 key购买 nike

我有一个简单的(示例)脚本来将文件上传到数据库(Oracle,如果重要的话):

<cfscript>
param string filename;

if ( FileExists( filename ) )
{
result = new StoredProc(
datasource = "ds",
procedure = "FILE_UPLOAD",
result = "NA",
parameters = [
{ value = FileReadBinary( filename ), type = "in", cfsqltype = "CF_SQL_BLOB" }
]
).execute();
}
</cfscript>

但是,ColdFusion CFML Reference FileReadBinary( filepath ) 的状态:

Note: This action reads the file into a variable in the local Variables scope. It is not intended for use with large files, such as logs, because they can bring down the server.

如果我不应该使用FileReadBinary( filepath ),我应该如何上传大文件(0.5 - 1Tb)?

最佳答案

如果可以选择使用Java,那么您可以将InputStream 对象传递给PreparedStatement 来填充Blob 字段。像这样的东西,异常处理和所有其他要添加的东西:

Connection con = someDataSource.getConnection();
String sql = "INSERT INTO MY_TABLE(MY_BLOB) VALUES(?)";
PreparedStatement ps = con.prepareStatement(sql);
InputStream fis = new FileInputStream("MyBigFile.big");
ps.setBlob(1, fis);
ps.executeUpdate();

我认为 Java 会使用缓冲区来完成此操作,而不是将整个文件加载到内存中。

关于oracle - 将大 BLOB 传递给存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44161721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com