如何通过环境变量配置DuckDB的file_search_path?
DuckDB中通过环境变量设置file_search_path的方案
DuckDB本身不会解析%userprofile%这类shell风格的环境变量占位符,直接执行SET file_search_path = '%userprofile%'只会把它当作普通字符串处理,不过有两种可行的解决方式:
通过shell预先解析环境变量后传入
在启动DuckDB时,先让shell解析环境变量再传递给SET命令:
Windows cmd环境:set "USER_PROFILE=%USERPROFILE%" duckdb -c "SET file_search_path = '%USER_PROFILE%'"Linux/macOS bash/zsh环境:
duckdb -c "SET file_search_path = '$HOME'"使用DuckDB内置
env()函数直接读取环境变量
DuckDB提供了env()函数可以直接读取系统环境变量,直接在SQL脚本里就能完成路径设置,非常适合团队共享脚本:-- Windows系统 SET file_search_path = env('USERPROFILE'); -- Linux/macOS系统 SET file_search_path = env('HOME');
如果需要脚本兼容多操作系统,可以用条件判断自动适配:
SET file_search_path = CASE WHEN current_setting('os_name') = 'Windows' THEN env('USERPROFILE') ELSE env('HOME') END;
内容的提问来源于stack exchange,提问作者Mike_W
相关产品推荐
相关产品推荐

