140 lines
6.7 KiB
Plaintext
140 lines
6.7 KiB
Plaintext
---
|
|
title: 表数据导入
|
|
description: 通过向导将 CSV、TSV、文本、JSON、Excel 或 SQL 数据导入现有表,或按文件批量创建新表。
|
|
---
|
|
|
|
表数据导入用于把文件数据写入数据库表。DBX 会先解析和预览文件,再让你确认解析选项、目标表、字段映射和执行方式,而不是选中文件后立即写入。
|
|
|
|
MongoDB Collection 不走这条关系型导入流程。请在 Collection 文档页使用 CSV/JSON 导入,参见 [MongoDB 工作区](/cn/docs/mongodb)。
|
|
|
|
<Callout type="warn">导入会真实写入数据库。连接的只读保护会阻止导入,但数据库权限仍是最终边界。生产环境使用前请确认目标连接、目标表和备份方案。</Callout>
|
|
|
|
## 两种目标方式
|
|
|
|
| 目标方式 | 行为 | 适合场景 |
|
|
| --- | --- | --- |
|
|
| 导入现有表 | 读取目标字段并建立源字段映射,可选择追加或清空后导入 | 数据补录、测试数据恢复、批量更新样例数据 |
|
|
| 创建新表 | 根据预览数据推断字段类型,你可以修改表名、字段名和类型后创建表并导入 | 从文件快速建表、迁移表格数据、一次导入多个文件 |
|
|
|
|
创建新表时可以一次选择多个文件。Excel 文件会按工作表拆成独立任务;DBX 为每个文件或工作表生成一个建议表名,并要求最终表名唯一。批量任务按顺序执行,每个任务保留自己的预览、映射和类型设置。
|
|
|
|
## 支持的文件
|
|
|
|
| 格式 | 说明 |
|
|
| --- | --- |
|
|
| CSV | 默认逗号分隔,也可以调整标题行、数据范围和编码 |
|
|
| TSV | 使用制表符分隔 |
|
|
| 分隔文本 | `.txt` 等文本文件,可自定义分隔符 |
|
|
| JSON | 支持单个对象、对象数组或数组行;可以指定对象或数组结构 |
|
|
| Excel | 支持 `.xlsx`、`.xlsm` 和 `.xls`,可选择工作表 |
|
|
| SQL | 包含字面量 `INSERT INTO ... VALUES` 语句的 `.sql` 脚本,每个文件对应一张表 |
|
|
|
|
SQL 导入只接受字面量 `INSERT INTO ... VALUES` 行;表达式、`REPLACE`、`INSERT IGNORE`、`INSERT ... SELECT` 等无法无损改写的内容会被拒绝,以保留数据和语句语义。
|
|
|
|
SQL 导入通过非流式路径读取整个脚本,单个 `.sql` 文件不能超过 100 MB,超出上限会显式报错。`TO_DATE`、`TO_TIMESTAMP` 等日期函数的值会按第一个参数的文本导入,目标字段必须能解析该格式。
|
|
|
|
Desktop 直接读取所选本地文件;Docker/Web 会先把浏览器选择的文件上传到服务器临时目录,预览和导入结束后释放临时源文件。
|
|
|
|
## 导入向导
|
|
|
|
<Steps>
|
|
<Step>
|
|
### 选择文件和目标方式
|
|
|
|
从表的右键菜单打开导入时,目标表会自动带入;也可以切换到创建新表并选择一个或多个文件。
|
|
|
|
</Step>
|
|
<Step>
|
|
### 调整解析选项
|
|
|
|
检查编码、标题行、数据起始行、最后一行、工作表、JSON 结构、空字符串和前后空白处理。
|
|
|
|
</Step>
|
|
<Step>
|
|
### 检查字段映射
|
|
|
|
导入现有表时把源字段映射到目标字段;创建新表时确认字段名和推断类型。右侧预览用于核对实际值。
|
|
|
|
</Step>
|
|
<Step>
|
|
### 复核执行计划
|
|
|
|
确认目标连接、数据库、Schema、表名、导入模式、映射数量、预计行数和批大小。
|
|
|
|
</Step>
|
|
<Step>
|
|
### 执行并检查结果
|
|
|
|
进度页显示读取、写入、完成状态、已导入行数、字节进度、耗时、错误和取消结果。
|
|
|
|
</Step>
|
|
</Steps>
|
|
|
|
## 解析选项
|
|
|
|
### 文本编码
|
|
|
|
CSV、TSV、分隔文本和 SQL 脚本支持自动检测、UTF-8、GBK、UTF-16 LE 和 UTF-16 BE。自动检测不正确时,请手动选择编码后重新检查预览。
|
|
|
|
### 行范围
|
|
|
|
- **标题行**:指定哪一行作为字段名
|
|
- **数据起始行**:跳过文件前部的说明或空行
|
|
- **最后一行**:只导入指定范围;`0` 表示读取到文件末尾
|
|
- **预览行数**:控制映射页显示多少行,不等于最终导入行数
|
|
|
|
### 值处理
|
|
|
|
- **去除前后空白**:对文本值执行 trim
|
|
- **空字符串按 NULL**:默认开启;关闭后会保留空字符串
|
|
- **JSON 结构**:自动识别,也可以强制按对象行或数组行解析
|
|
- **工作表**:Excel 可以切换工作表;批量建表会为各工作表建立独立任务
|
|
|
|
## 字段映射和建表
|
|
|
|
导入现有表时,DBX 先按字段名精确匹配,再按规范化名称匹配,规范化会忽略大小写、空格、下划线和连字符差异。
|
|
|
|
- 源字段可以跳过
|
|
- 同一个目标字段不能被重复映射
|
|
- 至少需要映射一个字段
|
|
- 未映射的必填字段必须有默认值、自增/生成规则或允许为空
|
|
|
|
创建新表时,源字段默认映射为同名目标字段,并根据预览值推荐数据库类型。类型建议只是起点;日期、精度、长文本、JSON、二进制和数据库特有类型应在执行前人工确认。
|
|
|
|
## 导入模式和批次
|
|
|
|
| 选项 | 行为 |
|
|
| --- | --- |
|
|
| 追加 | 保留目标表现有数据并插入新行 |
|
|
| 清空后导入 | 在支持的路径中先清空目标表,再写入文件数据 |
|
|
| 批大小 | 控制每次写入的行数,默认 500 |
|
|
|
|
创建新表和多文件批量导入固定使用追加模式,因为目标表由当前任务创建。清空后导入具有破坏性;不同数据库的事务和 `TRUNCATE` 语义不同,失败时不能假设所有已执行操作都会自动回滚。
|
|
|
|
## 数据库覆盖范围
|
|
|
|
DBX 根据驱动能力清单决定是否显示表导入。原生 SQL 驱动中只有实现了字段读取、建表/写入和类型转换的连接才会启用;Redis、MongoDB、搜索、向量、消息队列和配置中心等专用工作区不使用这个关系型表导入入口。
|
|
|
|
不要把“能够连接”理解为“支持表导入”。如果菜单未出现,应先检查当前数据库类型、驱动模式和版本,而不是直接假设权限问题。
|
|
|
|
## 失败和取消
|
|
|
|
- 解析失败通常发生在编码、分隔符、标题行、JSON 结构或 Excel 工作表设置不正确时
|
|
- 写入失败通常来自类型不匹配、非空约束、主键/唯一键冲突、权限或目标表结构
|
|
- 取消会阻止后续批次继续写入,但已经提交的批次不保证回滚
|
|
- 批量创建新表时,任务按顺序执行;某个任务失败后会保留失败表和错误信息,不应假设前面已完成的表会被撤销
|
|
|
|
## 相关功能
|
|
|
|
<Cards>
|
|
<Card title="数据传输" href="/cn/docs/data-transfer">
|
|
在两个连接、数据库或引擎之间复制表数据。
|
|
</Card>
|
|
<Card title="数据库导出" href="/cn/docs/database-export">
|
|
把结构、数据和对象导出为 SQL 文件。
|
|
</Card>
|
|
<Card title="生产环境安全" href="/cn/docs/production-safety">
|
|
了解只读保护、生产保护和数据库权限的边界。
|
|
</Card>
|
|
</Cards>
|