在 SQLcl 中管理多个数据库连接时,如果所有连接都堆在根目录下,查找起来会非常麻烦。笔者在实际使用中发现,conn 命令本身并没有提供 -folder 之类的参数,无法在保存连接时直接指定文件夹。想要让连接归入某个目录,需要采用"先建后移"的思路。
01 | 为什么不能直接保存到文件夹
使用 conn -save 连接名 ... 保存连接时,连接默认会落在根目录下。在本文使用的 SQLcl 版本中,conn 命令没有直接提供 -folder 或类似参数,所以保存这一步无法一步到位地指定目标文件夹;不同版本的行为请以所用版本的官方文档和实际测试结果为准。
flowchart LR A"conn -save 连接名" --> B"连接默认落在根目录" B --> C{"能否指定 -folder?"} C -- "不支持" --> D"需改用先建后移"
02 | 标准操作步骤
既然不能一步完成,就分三步走:先建文件夹,再保存连接,最后把连接移动过去。
① 先创建文件夹
如果目标文件夹还不存在,先用 cm add 创建。下面按环境维度建两个文件夹,把开发环境和测试环境的连接分开管理:
sql
SQL> cm add -folder dev/local
SQL> cm add -folder test/local
② 保存连接
正常保存连接,此时它会先进入默认的根目录。注意每个连接名必须唯一,不能重复,否则会与已有连接冲突:
sql
SQL> conn -save dev_conn -savepwd <用户名>/<密码>@//localhost:1521/orcl
-- 注意:-savepwd 会将密码保存到本地连接配置中,请确认存储位置与权限安全,避免在共享环境中使用真实凭据
SQL> conn -save test_conn -savepwd username/password@//localhost:1521/orcl
③ 将连接移动到文件夹
使用 cm move 命令,配合 -conn 指定连接名,后面跟上目标文件夹路径。执行前请确认连接名与目标文件夹路径均正确,避免移动到非预期位置;如不确定,可先用 cm list 查看当前结构。把两个连接分别归入各自的文件夹:
sql
SQL> cm move -conn dev_conn dev/local
SQL> cm move -conn test_conn test/local
flowchart TD subgraph ROOT"根目录" R1"dev_conn" R2"test_conn" end subgraph DEV"dev/local" D1"dev_conn" end subgraph TEST"test/local" T1"test_conn" end R1 -- "cm move -conn dev_conn dev/local" --> D1 R2 -- "cm move -conn test_conn test/local" --> T1
03 | 验证结果
移动完成后,用 cm list 查看连接列表:
sql
SQL> cm list
此时在 cm list 的输出中,应能看到 dev/local 文件夹下包含 dev_conn,test/local 文件夹下包含 test_conn;若连接仍显示在根目录,说明移动未生效,需检查 cm move 的连接名与路径是否正确。按环境分类后,连接管理变得一目了然,查找时不必再在一堆根目录连接里翻找。
flowchart TD ROOT"根目录" ROOT --> DEV"dev/local" ROOT --> TEST"test/local" DEV --> D1"dev_conn" TEST --> T1"test_conn"
关注我,和AI一起成长~