【问题标题】:How to use AWS Redshift Data API to execute SQL using Java? [closed]如何使用 AWS Redshift Data API 使用 Java 执行 SQL? [关闭]
【发布时间】:2021-02-15 12:34:24
【问题描述】:

有人可以帮我获取使用 Java 和 Redshift Data API 执行 SQL 的确切代码吗?

我们将在 Spring Boot 中使用 Java 创建 API,它将执行请求正文中提供的 SQL。后端将是 Redshift。在这种情况下,希望使用 Redshift Data API 来执行 SQL 而不是 JDBCTemplate,因为 AWS 提供了很好的功能,例如异步调用,避免 DB 连接池等。

【问题讨论】:

    标签: java amazon-web-services amazon-redshift


    【解决方案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?
    猜你喜欢
    • 2022-10-13
    • 2022-01-21
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2021-04-29
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多