gpt4 book ai didi

javascript - 无法使用 JDBC (Node.js) 访问 ignite 数据库的元数据?

转载 作者:行者123 更新时间:2023-12-01 01:54:02 25 4
gpt4 key购买 nike

我正在尝试访问我的元数据,以便使用这两种方法列出我的 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)非常感激。

最佳答案

以下代码片段对我有用:

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 } ]

关于javascript - 无法使用 JDBC (Node.js) 访问 ignite 数据库的元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51175193/

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