我正在使用 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 个字符,所以它们没有成功运行的希望。
知道我做错了什么吗?