NPM Oracle: вставка больших двоичных объектов - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь использовать библиотеку оракула NPM и обновить некоторые таблицы значениями BLOB, созданными из файлов на моем компьютере.Документация Oracle гласит, что для получения значения, которое примет база данных, нужно использовать функцию createLob (), подобную следующей:

conn.createLob(oracledb.BLOB, function(err, templob) {
if (err) { . . . }
// ... else use templob
});

Но я понятия не имею, что подразумевает использование use 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')}
                )

1 Ответ

1 голос
/ 24 июня 2019

Исходя из вашего варианта использования (небольшие файлы и ограниченный параллелизм), я думаю, что буферные API будут лучшим выбором, поскольку они очень просты.Начиная с документа :

Для таблицы:

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');
. . .

Кроме того, если вам когда-либо понадобитсяЯ завершаю мини-сериал на эту тему, но он больше посвящен загрузкам с веб-сервера: https://jsao.io/2019/06/uploading-and-downloading-files-with-node-js-and-oracle-database/

...