您可以使用boto3 SDK,这是亚马逊的Python SDK,以编程方式运行针对Redshift的SQL查询并获取结果。
下面的示例代码
import boto3
# Initialize Redshift client
client = boto3.client('redshift-data')
# SQL command
sql_command = """
SELECT query, SUM(bytes) AS total_bytes_scanned
FROM svl_query_report
WHERE query = [Your_Query_ID]
GROUP BY query;
"""
# Execute SQL command
response = client.execute_statement(
ClusterIdentifier='your-redshift-cluster-id',
Database='your-database-name',
DbUser='your-db-username',
Sql=sql_command,
SecretArn='arn-of-your-secret-for-credentials'
)
# Fetch query execution status and results
query_id = response['Id']
status = None
while status not in ('FINISHED', 'FAILED', 'CANCELLED'):
response_desc = client.describe_statement(Id=query_id)
status = response_desc['Status']
if status == 'FINISHED':
results = client.get_statement_result(Id=query_id)
for record in results['Records']:
print(record)
替换占位符,如您的红移集群id、数据库名称、数据库用户名[your_Query_id],并使用适当的值了解凭据的机密。
确保您已为boto3正确设置了AWS凭据。您可以使用AWS CLI、环境变量或IAM角色(如果在EC2实例或Lambda函数上运行)来执行此操作。