看下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
>> >
>>

回复