跳到主要内容

tcb db execute

在 PG 模式或 MySQL 环境中执行一条 SQL 语句,返回结果集。两种模式的参数不同。

版本

PG 模式的 tcb db execute 自 v3.4.0 起提供。

语法​

tcb db execute --sql '<sql>' [options]

PG 模式参数​

参数必填说明默认值
-s, --sql <sql>是要执行的 SQL 语句—
--role <role>否执行 SQL 的角色,可指定有效的自定义角色—
-e, --env-id <envId>是环境 ID—
--json否以 JSON 格式输出结果—

PG 模式示例​

# 基础查询
tcb db execute -e <envId> --sql "SELECT 1"

# 查询 Storage bucket 列表
tcb db execute -e <envId> --sql "SELECT name, public FROM storage.buckets ORDER BY created_at"

# 用自建的只读角色执行查询,防止误操作
tcb db execute -e <envId> --role <readonly_role> --sql "SELECT name, public FROM storage.buckets"

# 创建 Storage bucket
tcb db execute -e <envId> --sql "INSERT INTO storage.buckets (id, name, public, created_at, updated_at) VALUES ('avatars', 'avatars', false, now(), now())"

MySQL 模式参数​

参数必填说明默认值
-s, --sql <sql>是要执行的 SQL 语句—
--readOnly否以只读模式执行(适合查询,防止误操作)false
--instanceId <id>否实例 ID(多实例时指定)—
-e, --env-id <envId>否环境 ID—
--json否输出 JSON—
# 查询(只读模式)
tcb db execute --sql 'SELECT * FROM users LIMIT 10' --readOnly -e my-env-id

# 写入操作
tcb db execute --sql "INSERT INTO orders (user_id, amount) VALUES (1, 99.9)" -e my-env-id

# 查询指定实例
tcb db execute --sql 'SHOW TABLES' --instanceId inst-xxx --readOnly -e my-env-id

注意事项​

  • --role 可指定应用角色 anon、authenticated 或自定义角色。只读执行需使用已限制写入权限的角色
  • 平台保留角色不对用户开放,直接指定可能报权限错误 42501
  • 语句在服务端直接执行,没有本地预览步骤;改动数据前先用查询确认影响范围
  • 文档型数据库不走本命令,用 tcb db nosql execute