看下CliClient.java源码 open接口, final Optional<SqlCommandCall> cmdCall = parseCommand(line); cmdCall.ifPresent(this::callCommand); 可以看出解析字符串后执行响应命令。 目前我们这边一个项目也在做相似的,可以界面写好slq,以分号作为分隔符表示ddl或则DMl作为分隔符。 然后以文件方式保存(可以作为日志等用作)。 然后自己实现一个excutor类包装了tableEnvironment,主要功能用作string命令解析以及命令执行,可以简单的把flink的解析以及 callCommand拿过来,然后加以改造,内部支持ddl、dml、函数注册等。
这样不管做什么table操作,创建表或者注册函数、执行操作命令一个接口搞定。 其主要改动是:扩展callCommand以及SqlCommandCall 在 2020-07-21 20:35:01,"godfrey he" <[email protected]> 写道: >sql-client.sh的-u是指update语句,目前只支持insert。 > >Jark Wu <[email protected]> 于2020年7月21日周二 下午6:47写道: > >> Hi, >> >> 你想要的是类似于 sql-client.sh -u 的功能,直接通过命令行去执行 ddl 是么?非常抱歉,目前这是不支持的。 >> 社区的e2e测试目前也是通过 Java 代码来调用 sql-client.sh 来实现执行 ddl 的。 >> 不过社区是有计划支持 sql-client.sh 执行一个 sql 文件的,可以关注下FLINK-12828. >> >> Best, >> Jark >> >> On Thu, 16 Jul 2020 at 19:43, Harold.Miao <[email protected]> wrote: >> >> > hi flink users >> > >> > 众所周知,sql-client.sh的非交互模式下的-u是不支持ddl的,现在我们是用代码来调用sql-client.sh来做ddl, >> > 这样在交互模式如何去做。 通过hack sql client代码可以实现,但是不改代码的情况下有没有什么最佳实践。谢谢! >> > >> > >> > -- >> > >> > Best Regards, >> > Harold Miao >> > >>
