RedshiftDataClient BatchExecuteStatement объединяет все запросы в один
Я использую команду BatchExecuteStatement в RedshiftDataClient (@ aws-sdk / client-redshift-data 3.39.0) для выполнения ряда запросов по красному смещению. Это не обновляло базу данных, но и не выдавало ошибки, поэтому для устранения неполадок я использовал команду 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 символов каждого из них отображаются в объединенной строке, поэтому у них нет надежды на успешное выполнение.
Есть идеи, что я делаю не так?
1 ответ
Я не думаю, что вы делаете что-то не так, у меня такая же проблема с python. Возможно, это ошибка.
Мои запросы выполняются правильно внутри транзакции, но Redshift Data API возвращает в виде одной строки.
И, в моем случае, это искажает запрос на странице «Запросы и загрузки» в консоли Redshift, я могу видеть только последний из моего массива запросов.