java—如何执行sql文件中定义的多个sql查询

bvpmtnay  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(399)

我有一个包含许多sql查询的sql文件,如下所示:

CREATE TABLE ..... ;
ALTER TABLE .... ;

我想在一个单独的数据库中执行这些查询 spark.sql 调用java如何实现这一点?
谢谢

2wnc66cl

2wnc66cl1#

spark不支持通过一次调用执行多个查询 spark.sql (见此答案)。如果你不介意的话 spark.sql 你可以多次阅读 .sql 将文件转换为字符串,将其拆分为单独的查询,然后将其传递给 spark.sql ,就像这样:

import java.nio.file.*;

public static void main(String[] args) {
    String[] commands;

    try {
        Path sqlPath = FileSystems.getDefault().getPath("query.sql");
        String sql = new String(Files.readAllBytes(sqlPath));
        commands = sql.split(";", 0);
    } catch (Exception e) {
        System.out.println("failed to read SQL file");
        return;
    }

    for (int i = 0; i < commands.length; i++) {
        spark.sql(commands[i]);
    }
}

相关问题