Не удается получить доступ к метаданным базы данных зажигания с помощью JDBC (Node.js)? - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь получить доступ к своим метаданным, чтобы перечислить таблицы в моей базе данных ignite, используя эти два подхода, но все, что я могу получить, - это имя моей схемы и ничего из метода getmetadata, и для этого я используя следующий код:

var JDBC = require('jdbc');
var metadata = require('jdbc-metadata');
var async = require("async");
var jinst = require('jdbc/lib/jinst');
var ResultSet = require('jdbc/lib/resultset');
var databasemetadata = require('jdbc/lib/databasemetadata');

if (!jinst.isJvmCreated()) {
  jinst.addOption("-Xrs");
  jinst.setupClasspath([appRoot2 + '/ignite-core-2.4.0.jar']);
}

var config = {
  // Ignite configuration to your server
  url: 'jdbc:ignite:thin://host:port',
  drivername: 'org.apache.ignite.IgniteJdbcThinDriver',
  minpoolsize: 1,
  maxpoolsize: 100,
  properties: {}
};

var igniteConn = new JDBC(config);
igniteConn.initialize(function(err) {
  if (err) {
    done(err);
    return console.error('Connection Error: ' + err);
    saveToLog(req, 'Error on connection: ' + err, 300, 'JO-002', '');
  } else {
    console.log("connection established");
  }
});

igniteConn.reserve(function(err, connObj) {
      if (connObj) {
        console.log("Using connection: " + connObj.uuid);
        var conn = connObj.conn;
        async.series([

          function(callback) {
            conn.getSchema(function(err, res) {
              if (err) {
                callback(err);
              } else {
                console.log(res);
                callback(res);
              }
            });
          },
          function(callback) {
            conn.getMetadata(function(err, res) {
              if (err) {
                callback(err);
              } else {
                console.log("///////");
                console.log(res);
                callback(res);
              }
            });
          }
        ], function(err, results) {
          // Check for errors if need be.
          // results is an array.
        });

Второй подход с использованием driverManager:

var drivermanager = require('jdbc/lib/drivermanager');
drivermanager.getConnection(config.url, null, null, function(err, conn) {
  if (err) throw err;
  testconn = new Connection(conn);

  if (testconn) {
    async.series([
      function(callback) {
        testconn.getMetaData(function(err, result) {
          if (err) callback(err);
          console.log(result);
          /*
          else {
            result.getTables(null,null,null,null,function(err,res){
              if(err) callback(err);

              else {                      
                console.log(res);
              }

            });
          }*/
          //resultSet = result.getTables(null, null, null,"TABLE");
        });
      },
    ], function(err, results) {
      // Results can also be processed here.
      // Release the connection back to the pool.
    });
  }
});

Я могу обычно выполнять запросы к моим таблицам для получения информации. Если у кого-то есть какие-либо предложения, как я могу получить свои метаданные или если вы знаете запрос, который я могу запустить, чтобы получить его, если есть какие-либо другие альтернативы (например, SELECT information.tabels ... но это не работает на ignite), которые бы быть очень ценным.

1 Ответ

0 голосов
/ 05 июля 2018

У меня сработал следующий фрагмент:

var config = {
  libpath: 'ignite-core-2.4.0.jar',
  // Ignite configuration to your server
  url: 'jdbc:ignite:thin://127.0.0.1',
  drivername: 'org.apache.ignite.IgniteJdbcThinDriver',
  minpoolsize: 1,
  maxpoolsize: 100,
  properties: {}
};

var jdbcMetadata = new metadata(config);

jdbcMetadata.metadata(function (err, metadata) {
    console.log('Getting tables...');

    jdbcMetadata.tables({schema: "PUBLIC", types: ['TABLE', 'VIEW']}, function (err, tables) {
        console.log(tables);

        jdbcMetadata.close(function(err) {
          console.log('Connection closed');
        });
    });
});

Я мог видеть:

[ { tableCat: null,
    tableSchem: 'PUBLIC',
    tableName: 'A',
    tableType: 'TABLE',
    remarks: null,
    typeCat: null,
    typeSchem: null,
    typeName: null,
    selfReferencingColName: null,
    refGeneration: null } ]
...