如何使用 AWS Redshift Data API 使用 Java 执行 SQL? [关闭]
Posted
技术标签:
【中文标题】如何使用 AWS Redshift Data API 使用 Java 执行 SQL? [关闭]【英文标题】:How to use AWS Redshift Data API to execute SQL using Java? [closed] 【发布时间】:2021-02-15 12:34:24 【问题描述】:有人可以帮我获取使用 Java 和 Redshift Data API 执行 SQL 的确切代码吗?
我们将在 Spring Boot 中使用 Java 创建 API,它将执行请求正文中提供的 SQL。后端将是 Redshift。在这种情况下,希望使用 Redshift Data API 来执行 SQL 而不是 JDBCTemplate,因为 AWS 提供了很好的功能,例如异步调用,避免 DB 连接池等。
【问题讨论】:
【参考方案1】:要执行 SQL 语句(不使用 Java JDBC API),您可以调用 executeStatement 方法并使用 ExecuteStatementRequest object's sql method 指定 SQL 语句(例如 - CREATE 语句)。
这是一个使用 Redshift Data API 运行 SQL 语句的示例,该语句创建了一个名为 work1 的表。
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.redshiftdata.RedshiftDataClient;
import software.amazon.awssdk.services.redshiftdata.model.ExecuteStatementRequest;
import software.amazon.awssdk.services.redshiftdata.model.ExecuteStatementResponse;
import software.amazon.awssdk.services.redshiftdata.model.RedshiftDataException;
public class CreateTable
public static void main(String[] args)
String clusterIdentifier = "redshift-items";
String dataBase = "dev";
String user = "root";
String sqlStatement = "CREATE TABLE work1(\n" +
" idwork VARCHAR(45) PRIMARY KEY,\n" +
" date Date,\n" +
" description VARCHAR(400),\n" +
" guide VARCHAR(45),\n" +
" status VARCHAR(400),\n" +
" username VARCHAR(45),\n" +
" archive BOOLEAN\n" +
") ;";
Region region = Region.US_EAST_1;
RedshiftDataClient redshiftDataClient = RedshiftDataClient.builder()
.region(region)
.build();
try
ExecuteStatementRequest statementRequest = ExecuteStatementRequest.builder()
.clusterIdentifier(clusterIdentifier)
.dbUser(user)
.database(dataBase)
.sql(sqlStatement)
.build();
ExecuteStatementResponse resp = redshiftDataClient.executeStatement(statementRequest);
System.out.println("The query id is " +resp.id());
catch (RedshiftDataException e)
System.err.println(e.getMessage());
System.exit(1);
这行得通,我可以在 Redshift 控制台中查看表格:
对于 Java Data API V2,确保将此依赖项添加到 POM 文件中(如果您使用的是 Gradle 文件,请将其转换为 Gradle):
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>redshiftdata</artifactId>
</dependency>
对于此示例,凭据位于凭据文件中,该文件位于 Windows 上的 C:\Users\USERNAME.aws\credentials。
【讨论】:
基本上,我正在尝试使用以下 gradle 来使用 Async Redshift Data API:编译组:'com.amazonaws',名称:'aws-java-sdk-redshiftdataapi',版本:'1.11.934 ' 我无法理解,我应该如何进行身份验证才能使用 redshift data api?以上是关于如何使用 AWS Redshift Data API 使用 Java 执行 SQL? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
AWS:通过使用 amazon-data-pipeline 将数据从 S3 传输到 Redshift 来实现除 COPY 之外的其他功能
Google Data Studio 目前可以连接到 AWS RDS 或 Redshift 吗?
NLTK Data 可以安装在 AWS Redshift 环境中吗?
如何使用 aws unload 命令将数据从 AWS Redshift 卸载到 s3?
为 AWS Data Pipeline SqlActivity 指定 Redshift 架构,而不在 sql 脚本的开头添加“set search_path to ...”