脚本中使用obclient批量执行sql文件

客户端版本:odc 4.1.3
服务端版本:3.2.4 企业版 Oracle租户

遇到的问题:
1.如何使用obclient执行多个sql文件。
2.如何设置字符集为GBK。

解决方案:
对于问题1,使用了循环来实现。
对于问题2,在执行sql文件前,先set三个跟字符集相关的配置(character_set_client、character_set_connection、character_set_results)为gbk。
参考官方文档:https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000943884

最终的脚本如下(windows版)

`@echo off

@REM 相关变量
set OBC_CLIENT=“D:\Software\OceanBase Developer Center\resources\libraries\obclient\obclient.exe”
set HOST=127.0.0.1
set PORT=2883
set USER=user_name@tenant_id
set PASSWORD=userPassword
set SQL_FILE_LIST=sql-oceanbase.lst

@REM 设置字符集
%OBC_CLIENT% -h%HOST% -P%PORT% -u%USER% -p%PASSWORD% -A -e “set global character_set_client = gbk;set global character_set_connection = gbk;set global character_set_results = gbk;”

@REM 逐个执行清单中的sql文件
for /f %%f in (%SQL_FILE_LIST%) do (
%OBC_CLIENT% -h%HOST% -P%PORT% -u%USER% -p%PASSWORD% -A -e “source %%f”
if %errorlevel% equ 0 (
echo “%%f 执行成功”
) else (
echo “%%f 执行失败”
)
)

echo “所有SQL文件执行完毕”
pause`

1 个赞

您好!
感谢您提交技术问题,建议您不同版本通过相应标准渠道获取支持。
1.【商业版】 商业版使用问题可以联系公司/项目对接OceanBase客户代表通过标准售后渠道获取支持。
欢迎您通过合适渠道进行相关版本使用问题技术交流。
感谢您的理解与支持!