Snowflake - как подключиться к Snowflake с помощью NodeJS

Есть ли у кого-нибудь рабочий код для подключения NodeJS и Snowflake.

Пробовал следовать инструкциям для NodeJS:

var snowflake = require('snowflake-sdk');

var connection = snowflake.createConnection({
  account: 'account1',
  username: 'user1',
  password: 'pass1',
  region: 'us-east-1'
});

connection.connect(function(err, conn) {
  if (err) {
    console.error('Unable to connect: ' + err.message);
  } else {
    console.log('Successfully connected as id: ' + connection.getId());
  }
});

Продолжаю получать ошибки:

Network error. Could not reach Snowflake.

Точно так же - следующие инструкции для Python работают без проблем ( с использованием ТОЧНОГО того же пользователя / пароля / учетной записи и т. д., что и для NodeJS):

import snowflake.connector

ctx = snowflake.connector.connect(
    user='user1', 
    password='pass1',
    account='account1'
)

print ("SELECT current_version():")
cs = ctx.cursor()
try:
    cs.execute("SELECT current_version()")
    one = cs.fetchone()
    print(one[0])  # 2.50.2
finally:
    cs.close()

person Joe    schedule 20.09.2018    source источник


Ответы (4)


У учетной записи, которая используется в python, есть "account_id.region" что-то вроде

ctx = snowflake.connector.connect(
user='user1', 
password='pass1',
account='abc.us-east-1'
)

Для node.js вам нужно указать то же самое, что и:

var connection = snowflake.createConnection({
  account: 'abc',
  username: 'user1',
  password: 'pass1',
  region: 'us-east-1'
});
person Aneesha    schedule 28.10.2018
comment
Большое спасибо @Aneesha! У меня была такая же проблема при подключении с помощью Spark. Сначала я использовал клиент python, где учетная запись фактически является регионом учетной записи «+», а учетная запись для Spark - это просто учетная запись. Это такая безумная идея. Пожалуйста, соблюдайте одни и те же стандарты на разных платформах. - person Codious-JR; 29.11.2018

Удалите регион из информации о подключении и укажите account = 'abc.us-east-1'. Поле региона устарело и не должно использоваться при подключении к Snowflake.
https://docs.snowflake.net/manuals/user-guide/nodejs-driver-use.html#establishing-a-connection

person Suzy Lockwood    schedule 07.10.2019

Основываясь строго на предоставленном коде, функциональное различие между двумя примерами заключается в том, что в Node.js указывается область us-east-1, а в примере Python область не указывается. Регион по умолчанию - us-west-2, указывать его не нужно. В связанной документации указано: «используйте только в том случае, если ваша учетная запись находится не на западе США». Таким образом, указание неправильного региона может вызвать ошибки подключения.

person Jason S    schedule 24.09.2018

моя конфигурация сработала для меня:

 var connection = snowflake.createConnection({
   account: 'abc.us-east-1',
   username: 'user1',
   password:'pass1',
   authenticator: 'SNOWFLAKE',
   clientSessionKeepAlive: true,
});

connection.connect( 
    function(err, conn) {
        if (err) {
            console.error('Unable to connect: ' + err.message);
            } 
        else {
            console.log('Successfully connected to Snowflake.');
            // Optional: store the connection ID.
            connection_ID = conn.getId();
            }
        }
    );

person Nelles    schedule 14.07.2021