dbx/docs/content/docs/sql-file.cn.mdx

77 lines
2.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: SQL 文件执行
description: 选择连接后执行 .sql 文件,查看进度,并在需要时取消后续语句。
---
SQL 文件执行用于导入或运行本地 `.sql` 脚本。它适合执行初始化脚本、数据补丁、数据库导出文件和迁移脚本。
<Callout type="warn">执行 SQL 文件可能修改大量数据或结构。运行前请确认目标连接、目标数据库和脚本来源,生产环境建议先备份。</Callout>
## 使用流程
<Steps>
<Step>
### 打开 SQL 文件执行
在 DBX 中打开 SQL 文件执行面板。
</Step>
<Step>
### 选择文件
选择本地 `.sql` 文件。大文件可能需要更长解析和执行时间。
</Step>
<Step>
### 选择目标连接
选择要执行脚本的数据库连接和数据库。
</Step>
<Step>
### 开始执行
点击执行后DBX 会按语句执行并显示进度。
</Step>
<Step>
### 检查结果
执行结束后查看成功数量、失败语句和错误信息。
</Step>
</Steps>
## 语句分割
DBX 会按流式方式读取 SQL 文件,并尽量正确识别语句边界,避免简单按每个分号拆分:
- 字符串中的分号不会被当作语句结束
- 行注释和块注释中的分号不会被当作语句结束
- PostgreSQL 的 dollar-quoted 函数体会保持为同一条语句
- SQL Server 的 `GO` 行会被识别为批次分隔
- MySQL executable comments 会在导入前按目标连接处理MySQL 兼容连接会展开可执行内容,非 MySQL 连接会跳过;`ENABLE/DISABLE KEYS`、`LOCK/UNLOCK TABLES`、session 状态恢复这类导入辅助指令会跳过
## 数据库覆盖范围
SQL 文件执行面向 SQL 类数据库。Redis、MongoDB 和 Elasticsearch 不执行关系型 SQL 脚本,因此 DBX 会隐藏或禁用该功能。
## 错误处理
默认情况下,执行遇到错误会停止。你也可以启用“遇错继续”,让 DBX 继续执行后续语句并记录失败数量。
## 取消执行
执行过程中可以取消任务。取消只会阻止后续语句继续执行,已经提交到数据库的语句不会自动回滚。
<Callout type="info">如果脚本需要整体原子性,建议脚本本身包含事务控制,并确认目标数据库支持相关事务语义。</Callout>
## 执行前检查
- 当前连接是否是预期环境
- 脚本是否来自可信来源
- 是否包含 `DROP`、`TRUNCATE`、大范围 `UPDATE` 或 `DELETE`
- 是否需要先在测试环境执行
- 是否需要启用“遇错继续”
- 是否需要先使用 [数据库导出](/cn/docs/database-export) 备份