数据导入与导出
功能概述
Zion 数据库提供高效的数据导入与导出功能,支持将外部数据批量导入数据库,或将数据库中的数据导出为标准格式文件,便于数据迁移与备份。
Zion 数据库支持导入高达 1000 万行左右的数据,导入速度可达每分钟 10 万行。
数据导入流程
准备数据文件
表格文件要求:
- UTF-8 编码的 Excel 文件(仅支持 xlsx 格式)或 CSV 文件
- 第一行为表头
- 空白单元格不得包含数据或空格
- 至少包含一条数据记录
可在上传文件界面左下角下载模板表格。
如需导入图片、视频、文件,需额外准备一个 zip 压缩包:
- 在本地新建
image
、video
、file
三个文件夹,分别存放图片、视频和其他文件 - 直接将上述三个文件夹压缩为 zip 文件(请勿将其放入其他文件夹后再压缩)
- 在 CSV 或 Excel 文件中,多媒体列的值需填写为“文件夹名/文件名”,如:image/cover0.png、file/api.pdf、video/intro.mp4
上传文件
在 Zion 数据库左下角点击“导入”按钮,进入数据上传界面,上传准备好的表格和多媒体文件(可选)。表格可上传多个(支持 CSV 和 Excel 混合),多媒体 zip 文件仅限一个。
选择导入类型
选择“新增”或“更新”。“新增”指将数据直接插入数据库,“更新”则根据主键(id)更新已有记录。
配置映射
映射分为:
-
表映射: 指将上传的表格与数据库表进行对应,其中系统表(帐户表、支付表等)不支持导入。Excel 文件的每个工作簿(Sheet)对应一个表,每个 CSV 文件对应一个表。
-
字段映射: 指将上传的表格的列与数据库表字段进行对应,不需要导入的列可以打开每一行最右边的“忽略”选项。
关联字段映射
如果其他表和本表建立了关联,则需要配置关联表映射。其原理是:建立关联后,当前表会保存关联表的 ID。因此,导入时需通过表格中的某列和关联表中的某个字段(如用户名、邮箱等)进行匹配,查找对应的唯一的 ID。
例如,“帐户表”与“博客表”存在一对多关联,“博客表”的“作者”列用于存储“帐户表”的 ID。导入时可通过 Excel 表格中的作者姓名,在“帐户表”中查找匹配的“用户名”,获取对应 ID。
为避免因关联字段重复而导致 ID 查找失败(帐户表中如果存在多个用户名为“Arche”的数据,就不知道用哪条数据的 ID 了),需要保证“帐户表”中为“用户名”不能重复,因此需要给”用户名“配置唯一约束。
配置唯一约束后,在进行关联表映射时,将 Excel 表格中的“作者”列映射到账户表的“用户名”字段。如果约束中包含多个字段,则需要配置多个字段的匹配。
多媒体字段映射
如需导入多媒体文件(图片、视频和文件),在导入的表格中对应列的值需要填写为“文件夹名/文件名”,如“image/cover0.png”、“video/intro.mp4”、“file/api.pdf”。
在导入时,系统会自动将这些文件从上传的 zip 包中提取出来,并存储到数据库中。
经纬度字段映射
如需导入经纬度,需要先选择坐标类型(WGS84坐标系、国测局坐标系、百度坐标),再分别配置经度和纬度的映射。因此在导入的表格中,需要有两列分别存储纬度和经度。
数据冲突处理
当导入模式为“新增”且数据字段存在唯一约束时,若导入的数据中出现重复值,便会发生数据冲突。为应对此类情况,系统提供了冲突数据处理方式:
首先,选择约束:
-
任意唯一约束:只要任意一个设置了唯一约束的字段发生冲突,即触发冲突处理。
-
特定唯一约束:选择某个具体的唯一约束作为冲突判断依据。
系统提供以下三种冲突处理方式:
-
跳过:忽略冲突数据,继续导入其他非冲突数据。
-
更新:使用导入的新数据覆盖数据库中已存在的冲突数据,完成更新。
-
中止:立即停止整个导入过程,并记录详细错误信息。此选项仅在选择“任意”时可用。
触发器配置
如数据表配置了相关触发器(如新增、更新、删除),可在导入时选择是否触发。导入触发器采用白名单机制,如果在导入的过程中:
-
增加了新的触发器,不加到白名单中,不会被触发
-
修改了触发器,仍在白名单中,触发修改后的触发器
-
删除了触发器,从白名单移除,将立即不再被触发
预览数据
在配置完成后,可简单预览导入数据。系统会显示表格的前10行数据,供用户确认数据格式和内容是否正确。多媒体文件的预览仅显示文件名,不显示具体内容。
执行导入与查看结果
确认无误后,点击“导入”按钮,系统开始导入数据。导入过程会占用一定数据库空间,完成后自动释放。
导入完成后,系统将提示导入成功或失败。可在“历史”中查看详细导入结果,包括成功条数。如部分数据被跳过或失败,系统会提供可下载的日志文件(保留 7 天),详细记录被跳过数据及错误原因。
为保证数据完整性与一致性,只要有一条数据导入失败,本次导入的所有数据均不会写入数据库。
数据导出流程
配置导出选项
- 导出格式:CSV 或 Excel (xlsx)
若同时导出当前表和关联表,CSV 格式将生成多个独立的 CSV 文件,而 Excel 格式则会生成包含多个工作簿的单一文件。
- 导出多媒体文件:
开启此选项后,系统会将所有相关的多媒体文件(图片、视频、文件)打包成一个 ZIP 压缩包导出,压缩包中包含 IMAGE、VIDEO 和 FILE 三个文件夹,分别存放对应的媒体内容。
选择数据范围
- 选择数据表:支持所有系统表、自定义表及自定义视图
- 配置筛选条件:可设置过滤、排序、去重等条件,精准筛选导出数据
- 选择导出字段:可自由选择当前表及关联表字段
执行导出与查看结果
完成配置后,点击“导出”按钮开始导出。导出文件可在“历史”记录中查看与下载,文件保留 7 天。
导入常见错误处理
导入日志提供详细错误信息,包括文件名、工作表名、具体行数及错误描述,便于精准定位和排查。日志行号与表格实际行号一致,表格数据从第 2 行(第 1 行为标题)开始,日志亦从第 2 行报告。
错误信息 | 原因 | 处理建议 |
---|---|---|
NO_MATCHING_MEDIA | 未找到对应多媒体文件,可能因目录结构不规范或文件与数据未正确匹配。 | 1. 检查多媒体文件目录结构是否规范;2. 核对表格中的文件名是否规范;3. 检查表格文件名与实际文件是否一致。 |
unique_constraint_violation | 导入数据与唯一约束冲突。 | 1. 检查并移除重复数据;2. 在导入配置中选择跳过该唯一约束。 |
MISMATCHED_DATA_TYPE | 数据类型不匹配。 | 请将表格数据修改为指定数据类型。 |
INTERNAL_ERROR | 可能原因多样,如压缩包编码非 UTF-8。 | 建议使用 Bandizip 等工具进行压缩。 |