如何使用 NodeJs Snowflake 驱动程序以异步模式执行 Snowflake 语句?

2023-12-22

我在用着 (NodeJs Snowflake 驱动程序库 https://docs.snowflake.com/en/user-guide/nodejs-driver-use.html) - 雪花-sdk https://www.npmjs.com/package/snowflake-sdk并想问: 有没有一种方法以异步方式执行 Snowflake 语句,以便在启动繁重的过程后我可以使用 Snowflake 的 query_history() 调用来监视其状态? 看起来 Snowflake-connector-nodejs 不允许设置async执行参数传入内部雪花 API 调用 https://docs.snowflake.com/en/developer-guide/sql-api/index.html关于语句执行... 一般来说,Snowflake REST API 允许执行 sql 语句async模式使用async:true (see here https://docs.snowflake.com/en/developer-guide/sql-api/reference.html#query-parameters) - 这是一个 url 参数,但在 NodeJs 雪花驱动程序库中不允许使用。

这是我的代码片段:

  async executeStatement(params: ExecuteProcedureParams, connection: sf.Connection): Promise<ExecutionResult> {
    const procedureCommand = `${params.sqlCommandText};`;
    return new Promise((resolve, reject) => {
      try {
        connection.execute({
          sqlText: procedureCommand,
          binds: params.sqlCommandParams ?? undefined,
          complete: (err: Error, stmt: sf.Statement, rows: any) => {
            if (err) {
              reject(err);
            } else {
              console.log('Number of rows produced: ' + rows?.length);
              resolve({
                requestId: stmt.getRequestId(),
                executedSqlText: stmt.getSqlText(),
                rows,
              });
            }
          },
        });
      } catch (err) {
        console.log(err);
      }
    });
  }

我想executeStatement如果我选择运行,对于繁重的语句是非阻塞的connection.execute({...}); in async mode.

我相信这是我们应该能够设置异步参数的地方:

url: Url.format(
        {
          pathname: '/queries/v1/query-request',
          search: QueryString.stringify(
            {
              requestId: statementContext.requestId,
              async: statementContext.async // <--- NEW LINE THAT DOESN'T EXIST AT THE MOMENT
            })
}),

源代码是here https://github.com/snowflakedb/snowflake-connector-nodejs/blob/master/lib/connection/statement.js#L1134

也许有人可以推荐一种方法来实现这种异步行为?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 NodeJs Snowflake 驱动程序以异步模式执行 Snowflake 语句? 的相关文章

  • 通过 Amazon SQS 将压缩文本从 PHP 发送到 NodeJS

    我似乎一直坚持通过 Amazon SQS 将压缩消息从 PHP 发送到 NodeJS 在 PHP 方面我有 SQS gt sendMessage Array QueueUrl gt queueUrl MessageBody gt artic
  • PDF 附件 NodeMailer

    预先感谢您的回复 我编写了一些使用nodemailer 0 7 1的代码 它发送电子邮件并将pdf附加到电子邮件中 但是 pdf 附件在编码时会自行损坏或截断或发生其他情况 我之所以说这是附件之前的文件 即我本地的文件 是512kb 而电子
  • crypto createHMAC 输出根据 Nodejs 版本而有所不同

    我在升级节点版本时遇到加密模块问题 创建的HMAC取决于节点的版本 您将在下面找到重现该问题的代码片段 如果我将密钥编码为 BASE64 或任何 HMAC 不依赖于 node js 版本 如果我将其编码为二进制 则当我更改 Node js
  • 401 未经授权的帖子回复

    我一直在使用 Angular 模板制作 Node js 网站 但我无法在 DB Mongo 上创建数据 这是代码 节点路由 var Property mongoose model Property var jwt require expre
  • 如果 Grunt 任务的子任务之一失败,如何使其失败?

    我在 grunt 中有一个构建任务 如下所示 grunt registerTask build jshint uglify 问题是 即使 jshint 任务失败 uglify 任务也会运行 如果它的子任务之一失败 如何使 build 任务终
  • Firebase 回调 - 底层触发器是什么?

    据我所知 在 Firebase 中我可以使用 on 方法注册我的页面以进行回调 根据他们的文档 on 用于监听特定位置的数据更改 这是从 Firebase 读取数据的主要方式 firebaseRef on value function da
  • npm install 的问题(Angular)

    今天我尝试创建一个新项目 所以我使用这个命令 ng new NAME style less 并在我的cmder中弹出错误和警告 所以我卸载了 Roaming npm 和 npm cache 中的节点和文件 然后我安装了node并再次下载cm
  • 根据 MVC,哪种项目结构是正确的? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我注意到诸如flask通常有一个名为views容纳 app route def index return render template ind
  • 如何用 JavaScript 修复图像透视变形和旋转?

    我有一些用手机拍摄的图像 有没有可以拉直纸张照片并将其压平的 JavaScript 库 例如 我想创建一个矩形图像 该图像没有任何失真 换句话说我想知道如何用 JavaScript 修复透视变形和旋转 例如 我发现下面的示例图像来自this
  • 如何让 Angular 监视多个库的更改并在需要时重新编译

    这个问题与让 Angular 应用程序监视库更改并进行自我更新 https stackoverflow com questions 60473727 make angular app watch for libraries changes
  • 让 Jest 全局设置和全局拆卸在 TypeScript 项目中工作

    我想运行一个在运行测试之前打开数据库连接的函数 全局设置 以及另一个在运行测试后关闭数据库连接的函数 全局拆卸 目前我有以下配置 包 json jest testEnvironment node globalSetup src jest g
  • 如何在网络服务器中的端口 80 而不是端口 5000 上运行“部署”。

    我正在使用 deployd 运行一个网站 并且在将在端口 5000 上运行的应用程序更改为端口 80 时遇到问题 我想要做的是不要使用 mydomain com 5000 而只想使用 mydomain com 5000 com 谢谢 根据内
  • 无论我将其添加到何处,Azure 应用程序服务(节点)CORS 源都无法工作

    Azure CORS 设置似乎根本不起作用 除非我指定 任何和所有请求都将返回 has been blocked by CORS policy Response to preflight request doesn t pass acces
  • 返回承诺与在承诺内返回未定义之间的区别

    我不太确定我是否理解这两种常见场景之间的区别 假设我们有这个 user save then function val anotherPromise1 val then function val anotherPromise2 val cat
  • 在 Node.js 中一次迭代 50 个项目的数组

    我是 node js 的新手 目前正在尝试编写数组迭代代码 我有一个包含 1 000 个项目的数组 由于服务器负载问题 我想一次迭代 50 个项目的块 我目前使用 forEach 循环 如下所示 我希望将其转换为上述块迭代 result i
  • model.save() 返回无效输出

    我正在使用本文中的 Node js mongodb 和express 对 REST Api 进行简单测试 MERN 第一部分 使用 Node js 和 Express 构建 RESTful API https medium com week
  • 将node_modules安装到vendor

    如何在本地为每个项目安装 npm 模块vendor node modules和做package json文件看到他们 我不想将 package json 移动到供应商文件夹 我有凉亭 在 bowerrc我指定bower components
  • Nodejs 中的 tail-stream 模块不打印文件的最后一条记录

    我正在使用 tail stream 从 csv 文件获取数据 并将每个 csv 记录转换为 json 格式并打印它 但是尾流不会打印文件的最后一行 而是将其保留为缓冲区 如果我更新文件 则从上一个最后一行 缓冲的最后一行 到更新的最后一行
  • 将base64图像转换为Node Js中的文件

    我是 Node Js 新手 我需要包含用户的个人资料图片 我从 IOS 应用程序收到 Base64 图像的请求 我需要将其存储在 images 文件夹中并将图像路径保存在 mongodb 数据库中 我使用了以下代码 var bitmap n
  • Boost.asio和异步链,unique_ptr?

    我对异步编程不太熟悉 我有一个问题 我的问题如下 给出 boost asio 中 C 11 的 echo server 示例 http www boost org doc libs 1 60 0 doc html boost asio ex

随机推荐