You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker容器内的CockroachDB中正确运行SQL脚本?

解决CockroachDB容器中执行init.sql脚本的问题

你的问题出在命令的引号使用上——把带重定向的完整命令放进引号后,容器内的Shell无法正确解析<这个输入重定向操作,因为引号会将整个内容当作单个参数传递,而不是交给Shell去处理重定向逻辑。

这里有两种可靠的解决方式:

方法1:利用宿主机Shell处理重定向

通过-i参数保持容器的标准输入打开,让宿主机直接把本地脚本内容传入容器内的cockroach sql命令:

docker exec -i node1 cockroach sql --insecure < "${PWD}/sql/init.sql"

这种方式的好处是不需要依赖容器内的挂载路径,直接使用宿主机上的脚本文件路径即可。

方法2:让容器内的Shell解析完整命令

通过调用容器内的bash来执行包含重定向的完整命令,这样容器内的Shell会正确处理<操作,读取你挂载到容器里的脚本文件:

docker exec node1 bash -c "cockroach sql --insecure < /cockroach/sql/init.sql"

执行完任意一种方法后,你可以通过以下命令进入容器的SQL交互界面,验证脚本是否执行成功:

docker exec -it node1 cockroach sql --insecure

比如查询脚本中创建的表,确认数据或结构是否符合预期。

内容的提问来源于stack exchange,提问作者sargas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:22:22