0

我正在使用 RedshiftDataClient (@aws-sdk/client-redshift-data 3.39.0) 中的 BatchExecuteStatement 命令对 redshift 执行一些查询。这没有更新数据库,但也没有引发错误,所以为了解决问题,我使用 ListStatements 命令查看是否有关于发生了什么的见解。我发现我的所有查询都被合并为一个。例如:

const redshiftQueries: string[] = ["select 1", "select 2", "select 3"];
await redshiftDataClient.send(
      new BatchExecuteStatementCommand({
        ...other.config.values,
        Sqls: redshiftQueries,
      })
    );

await redshiftDataClient.send(
        new ListStatementsCommand({
          MaxResults: 100,
          Status: StatusString.ALL,
        })
      );

返回

{
  "$metadata": {
    "httpStatusCode": 200,
    "requestId": "6c1dbf86-0bf1-4111-9f96-c300114daaaa",
    "attempts": 1,
    "totalRetryDelay": 0
  },
  "Statements": [
    {
      "CreatedAt": "2021-11-04T12:39:14.423Z",
      "Id": "0218bcbc-b775-4318-b111-65d7cd7eaaaa",
      "IsBatchStatement": true,
      "QueryString": "select 1select 2select 3",
      "Status": "FINISHED",
      "UpdatedAt": "2021-11-04T12:39:15.120Z"
    }
  ]
}
 

查看 ListStatements 的文档,我希望在这种情况下接收带有查询数组的 QueryStrings 属性,而不是连接查询的 QueryString 属性。

我需要运行的实际查询当然要长得多,问题是当它们像这样连接时,连接字符串中只有每个字符的前 100 个字符,所以它们没有成功运行的希望。

知道我做错了什么吗?

4

0 回答 0