我正在尝试使用NPM oracle库并使用从计算机上的文件创建的BLOB值更新某些表。 Oracle文档说要像下面那样使用createLob()函数来获取数据库将接受的值:
conn.createLob(oracledb.BLOB, function(err, templob) {
if (err) { . . . }
// ... else use templob
});
但是我不知道“使用templob”意味着什么...
如何将数据放入这些oracledb.BLOB对象?
编辑:我正在尝试的更新示例:
const queryString = `UPDATE TABLENAME SET BLOB = :blob WHERE ID = 1234;`;
this.oracleConnection.execute(queryString,
{blob: await fs.readFileSync('/path/to/image.jpg')}
)
答案 0 :(得分:1)
根据您的用例(小文件和有限的并发性),我认为缓冲区API会是最好的选择,因为它们非常简单。来自the doc:
提供表格:
CREATE TABLE mylobs (id NUMBER, c CLOB, b BLOB);
一个INSERT示例是:
var fs = require('fs');
var str = fs.readFileSync('example.txt', 'utf8');
. . .
conn.execute(
`INSERT INTO mylobs (id, myclobcol) VALUES (:idbv, :cbv)`,
{ idbv: 1,
cbv: str }, // type and direction are optional for IN binds
function(err, result) {
if (err)
console.error(err.message);
else
console.log('CLOB inserted from example.txt');
. . .
另外,如果您需要它,我将在这个主题上整理一个小型系列,但它更多地围绕着Web服务器上载:https://jsao.io/2019/06/uploading-and-downloading-files-with-node-js-and-oracle-database/