【问题标题】:Query select from Amazon Redshift using a lambda function nodejs使用 lambda 函数 nodejs 从 Amazon Redshift 查询选择
【发布时间】:2021-08-19 21:02:01
【问题描述】:

我需要从我们在 Amazon Redshift 上的 dw 中的表中进行查询。我一直在阅读,但找不到从那里的表中查询的方法,我通常这样做是为了使用 sequelize 进行连接。

const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');

const basename = path.basename(__filename);
const db = {};

const sequelize = new Sequelize(
  process.env.DB_REDSHIFT,
  process.env.DB_USER,
  process.env.DB_PASS,
  {
    host: process.env.DB_HOST,
    dialect: 'postgres',
    ...process.env.NODE_ENV !== 'dev' && {
      logging: false,
    },
    define: {
      underscored: true,
    },
    dialectOptions: {
      multipleStatements: true,
      dateStrings: true,
      typeCast: (field, next) => {
        if (field.type === 'DATETIME' || field.type === 'TIMESTAMP') {
          return field.string();
        }
        return next();
      },
    },
    pool: {
      max: 1,
      min: 0,
      idle: 10000,
    },
  },
);

fs.readdirSync(__dirname).filter((file) => {
  return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
}).forEach((file) => {
  const model = sequelize.import(path.join(__dirname, file));
  db[model.name] = model;
});

Object.keys(db).forEach((modelName) => {
  if (db[modelName].associate) {
    db[modelName].associate(db);
  }
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;


但我得到了SequelizeHostNotFoundError: getaddrinfo ENOTFOUND,我尝试过使用端点、jdbc 和 odbc,我对此真的很陌生,所以任何事情都会有所帮助。

【问题讨论】:

    标签: node.js amazon-web-services sequelize.js amazon-redshift


    【解决方案1】:

    Amazon Redshift 公开了一个允许您执行 CRUD 操作的数据客户端。见:

    Redshift Client - AWS SDK for JavaScript v3

    您可以在 Lambda 函数中使用此客户端对 Redshift 表执行 CRUD 操作。无需使用JDBC、ODBC等。

    【讨论】:

      猜你喜欢
      • 2017-07-24
      • 1970-01-01
      • 2016-09-29
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多