我一直在尝试使用Node运行一个简单的Snowflake查询。 一切都连接起来,看起来还可以,但是我似乎无法钩住查询结果。 以下代码基于官方文档here 这样可以正确记录行数,但不能记录实际结果。 除非我缺少任何内容,否则文档不会显示任何对象信息。
有什么想法的人吗?
var snowflake = require('snowflake-sdk');
var connection = snowflake.createConnection( {
account: 'xxx',
username: 'xxx',
password: 'xxx',
database: 'xxx',
warehouse: 'xxx',
role: 'xxx'
} );
connection.connect(
function(err, conn) {
if (err) {
console.error('Unable to connect: ' + err.message);
}
else {
console.log('Successfully connected to Snowflake.');
connection_ID = conn.getId();
var statement = connection.execute({
sqlText: 'SELECT * FROM MY_SCHEMA.MY_TABLE LIMIT 1;',
complete: function(err, stmt, rows) {
if (err) {
console.error('Failed to execute statement due to the following error: ' + err.message);
} else {
console.log('Successfully executed statement: ' + stmt.getSqlText() + ' > ' + rows.length);
}
}
});
答案 0 :(得分:1)
您要在终端中显示数据吗?
例如,代替SQL语句:
hadoop-hdfs-namenode-<hostname>.log
您正在寻找:
console.log('Successfully executed statement: ' + stmt.getSqlText() + ' > ' + rows.length)
这是非常基本的,并且有很多不同的方法可以实现您想要的,但是我希望它会有所帮助。 Snowflake文档旨在帮助与Node建立联系并发送一些基本信息,但是我确信您的Node / JavaScript开发团队将是编写客户端解决方案以补充您的工作流程的主要人员。
答案 1 :(得分:0)
你的代码看起来没问题,你在 else 部分获取 stmt 后遗漏了一些步骤,下面的代码将帮助你得到结果。
var snowflake = require('snowflake-sdk');
var connection = snowflake.createConnection( {
account: 'xxx',
username: 'xxx',
password: 'xxx',
database: 'xxx',
warehouse: 'xxx',
role: 'xxx'
} );
connection.connect(
function(err, conn) {
if (err) {
console.error('Unable to connect: ' + err.message);
}
else {
console.log('Successfully connected to Snowflake.');
connection_ID = conn.getId();
query="select * from yourTable";
dbConnection.execute({
sqlText: query,
streamResult: true,
complete: function (error, stmt, rows) {
if (error) {
console.log(error);
}
stmt.streamRows({
start: 0,
end: stmt.getNumRows() - 1,
})
.on('error', function (error) {
if (error) {
next({ statusCode: 400, message: error });
}
next({ statusCode: 400, message: 'Unable to consume requested rows' });
})
.on('data', function (row) {
output.push({ name: row.name })
})
.on('end', function () {
});
}
});
}