java - 如何执行 SQL 文件中定义的多个 SQL 查询
问题描述
我有一个包含许多 SQL 查询的 SQL 文件,如下所示:
CREATE TABLE ..... ;
ALTER TABLE .... ;
我想在一次spark.sql
调用中执行这些查询如何在 JAVA 中实现这一点?
谢谢
解决方案
Spark 不支持通过一次调用执行多个查询spark.sql
(请参阅此 SO 答案)。如果您不介意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]);
}
}
推荐阅读
- mysql - 需要 SQL 查询帮助并显示错误消息操作数应包含 1 列
- json - 将 json 字符串作为输入传递给 POST 请求正文的参数之一
- html - Firefox 中的 Flexbox 溢出-y 滚动
- c - 查找表和跳转表的区别
- android - 添加服务进程名称后应用程序未通过 USB 安装?
- react-native - 双条件渲染不起作用
- regex - 用于从 img src 中提取图像名称的正则表达式
- windows - 我可以卸载多个冗余 Windows SDK 来恢复磁盘空间吗?
- regex - 什么是拆分句子但排除某些特定情况的正则表达式
- compression - 用于压缩的二元决策图等工具