客户端版本: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`