数据导入或导出

最近更新时间:2025-04-28 17:24:32

我的收藏
当需要将本地文件或 COS 上的文件数据导入到指定实例库表中,可提交数据导入工单申请流程。当需要从指定实例库表中导出数据,可提交数据导出工单申请流程。
导入导出工单支持多种文件格式(如 SQL、CSV、Excel),并在导入和导出前进行语法、语义分析和数据验证,确保数据质量,减少手动输入工作量和错误,并通过工单审批,进一步保障数据库的安全性。

支持的数据库

仅支持 MySQL 数据库。具体支持的版本请参见 支持的数据库

实现逻辑

数据导入
数据导出



1. 创建数据导入工单,选择待导入的执行实例、执行数据库、执行方式、文件类型(支持 SQL、CSV、Excel)、文件编码,导入文件等配置信息。
2. 提交工单后,系统自动进行 SQL 语法分析检查,检查成功自动进入语义分析阶段,检查成功自动进入审批阶段。若检查失败,请修改 SQL 语句。仅选择 SQL 文件类型时涉及语法和语义分析。
3. 解析成功后,进入工单审批步骤,审批结束后,自动进入执行队列。
4. 进入执行队列后,进行自动执行、手动执行或定期执行 SQL。
5. 进入执行阶段,进行工单配置解析和 SQL 导入。
5.1 首先进行工单配置解析。
5.2 针对 SQL 文件类型进行文件流式拆分、聚合,针对 CSV、Excel 文件进行文件流式解析并生成被聚合后的 SQL 块,方便加速写入,同时尽量避免客户实例的负载过高。
5.3 将 SQL 语句流式写入实例。
6. 展示执行结果和执行详情。



1. 创建数据导出工单,选择待导出的执行实例、执行数据库、执行方式、文件类型(支持 SQL、CSV、Excel)、导出格式、导出方案等配置信息。
2. 提交工单后,系统自动进行 SQL 语法分析检查,检查成功自动进入语义分析阶段,检查成功自动进入审批阶段。若检查失败,请修改 SQL 语句。仅选择 SQL 文件类型时涉及语法和语义分析。
3. 解析成功后,进入工单审批步骤,审批结束后,自动进入执行队列。
4. 进入执行队列后,进行自动执行、手动执行或定期执行 SQL。
5. 进入执行阶段,进行工单配置解析和文件导出。
5.1 首先进行工单配置解析。
5.2 针对 SQL 文件类型,dump 服务从源实例拉取导出数据;针对 CSV、Excel 文件类型,DB 客户端服务从源实例拉取导出数据。
5.3 将拉取的导出数据流式上传至内部 COS 服务。
6. 展示执行结果和导出文件下载链接。
其中,数据导入导出任务均为单线程。

影响说明

导入影响说明

导入任务加写锁说明及影响 若导入文件类型为 CSV、Excel,默认会对待导入的表加写锁,在整个导入过程中,其它线程将无法对待导入的表进行任何读或写操作。加写锁语句说明如下:
导入任务开始前:LOCK TABLES `table_test` WRITE
导入任务结束后(无论成功和失败):UNLOCK TABLES
数据导入加锁涉及 InnoDB 和 MyISAM 存储引擎。
若导入的 SQL 文件类型存在语法问题,提交工单后在语法分析步骤会导致解析失败。
若导入的 SQL 文件类型不符合待执行实例已绑定的 SQL 变更规则模板,提交工单后在语义分析步骤会导致解析失败。
在执行数据导入任务过程中,若用户的实例负载过高,可能导致任务执行失败或卡死。

导出影响说明

导出任务加读锁说明及影响
若导出配置选择 SQL 文件类型、表导出方案时,为了保证导出数据的一致性,建议开启锁表,开启后将对待导出的表施加读锁。
若导出配置选择 SQL 文件类型且选择编写 SQL 导出,系统默认会对待导出的表施加读锁。对于包含列查询的 SQL 语句,是否加读锁则与用户的表情况及 SQL 语句本身有关。
若导出配置选择 CSV、Excel 文件类型,默认不显式加读锁,是否会对表加读锁与用户的表情况及 SQL 语句本身有关。
加读锁后,在整个导出过程中,其他线程无法对待导出的表进行写操作。
加读锁语句说明
导出任务开始前:LOCK TABLES `table_test` READ
导出任务结束后(无论成功和失败):UNLOCK TABLES
数据导出加锁涉及 InnoDB 和 MyISAM 存储引擎。
在执行数据导出过程中,可能导致用户实例的查询 IO 会升高,这属于正常现象。若需要提高查询效率,您可以对实例扩容,或者减少对该导出实例的其他业务操作。

使用限制

仅 MySQL 数据库类型支持数据导入导出。
最大支持导入导出3GB的 SQL 文件、CSV 文件,最大支持导入导出10MB的 Excel 文件。其中,Excel 文件类型仅支持 .xlsx 格式,其他格式可能存在兼容性问题。
一个主账号或一个子账号最大支持同时运行7个状态为执行待执行的导入导出工单,其中大任务(即文件大小大于500MB)最大支持同时运行2个状态为执行待执行的导入导出工单。

前提条件

子账号已具有 DMC 相关功能页面的访问权限,具体说明及操作请参见 DMC 用户权限设置。主账号默认拥有全部权限。
操作账号已具有导入导出权限。相关操作请参见 授权、回收用户操作权限权限申请
执行实例需开通管控并开启安全发布状态。具体请参见 开通管控实例开启安全发布状态

操作步骤

1. 登录 DMC 控制台
2. 在左侧导航栏,选择安全发布 > 创建流程 > 导入导出
3. 创建导入或导出工单。
创建导入工单
创建导出工单
在页面上方单击导入,配置参数

在页面上方单击导出,配置参数。



参数说明如下表所示。
参数
说明
执行实例
选择待执行的实例,列表展示实例对应的数据源名称和 ID。
执行数据库
选择待执行的数据库。
执行方式
选择执行方式,包括:
手动执行:待工单审批完成后,需要手动触发执行 SQL 语句。
自动执行:待工单审批完成后,自动进入执行队列,执行 SQL 变更。
定时执行:选择执行时间,待工单审批完成后,根据已设定的执行时间自动进入执行队列,执行 SQL 变更。
文件类型(导入)
文件类型包括 SQL、CSV 和 Excel。
SQL:选择 SQL 文件类型后请选择导入文件并配置以下参数。
更多配置:单击显示,勾选是否忽略外键。
CSV、Excel:选择 CSV 或 Excel 文件类型后还需要配置以下参数。
导入表:选择待导入数据的表。
包含列名:选择导入文件是否包含列名。
导入方式:选择插入替换
分隔符:除双引号(")和 Tab 键外的任意字符串,默认为英文逗号(,)。仅适用于 CSV 文件类型。
设置分隔符(如英文逗号)后,在读取数据时生效,将每一行分割成不同的字段。例如,当读取一行 "ad","po","vb",分隔符会把这行拆分为三个字段,分别对应列名的值。在组装 SQL 语句时,这些部分被用作插入值。
文件编码
选择文件编码格式,包括 uft8、gbk、gb2312、latin1。
导入文件
本地文件:单击点击上传上传本地文件或拖拽文件至对应区域。仅允许上传3GB以内且格式为 .sql、.csv 的文件和10MB 以内的 .xlsx 文件。
使用 COS 上的文件:请输入 COS 源文件地址。请提供公有读权限的 cos 地址,以便于 DMC 服务能获取到该文件。
文件类型(导出)
文件类型包括 SQL、CSV 和 Excel。
SQL:选择 SQL 文件类型,导出方案可选择编写 SQL 导出选择表导出。选择表导出还需设置以下参数。
导出表:选择全部表部分表
导出内容:包括导出数据结构数据和结构三种。
是否锁表:选择是否锁表。为了保证导出数据的一致性,建议开启锁表(读锁)。
注意:
锁表能保证数据在导出过程中的一致性,同时也需注意由于对表加了读锁,在锁被释放前写操作将会被阻塞。
导出对象:包括存储过程和函数触发器视图事件四种。
数据选项:仅包括转储二进制字段时用十六进制标记
其他选项:包括压缩 Insert 为批量写入在 CREATE 语句前生成 DROP 语句在 INSERT 语句前生成 TRUNCATE TABLE 语句
说明:
开启在 CREATE 语句前生成 DROP 语句,普通表与视图差异如下:
普通表:在建表语句之前会先 DROP 该表(如果存在该表)。示例:DROP TABLE IF EXISTS xxx;
视图:在建视图的语句前添加删除该视图语句。示例:DROP VIEW IF EXISTS xxx;
开启在 INSERT 语句前生成 TRUNCATE TABLE 语句,会先清空表中的所有数据,然后再执行 INSERT 操作来插入新的数据。清空后的数据可能无法复原,请谨慎操作。
CSV、Excel:选择 CSV 或 Excel 文件类型后还需要配置以下参数。
包含列名:选择导出文件是否包含列名。
导出方案:导出方案可选择编写 SQL 导出选择表导出。选择表导出可选择全部表部分表
说明:
导出方案选择编写 SQL 导出时,不支持连表 join、子语句等 SQL 导出。
参考语法如下: select * from ruirui_test where id > 5 order by id desc limit 30
导出格式
选择文件导出格式,包括 uft8、gbk、gb2312、latin1。
申请原因
请输入数据导入或导出的申请原因,以便快速通过审批。
4. 配置完成后单击确定
提交工单申请后,系统会自动进行语法分析、语义分析。
5. 查看工单状态和工单详情。
提交工单后,系统自动进入工单详情页面,展示工单详情、工单状态及工单解析结果。
也可在流程管理 > 工单列表页面选择我的申请页签,查看工单状态和工单详情,具体操作请参见 工单列表
语法和语义均检查成功
解析结果显示解析成功,工单状态更新为审批中,可直接执行下一步。

语法检查失败

单击编辑导入设置,修改导入文件,单击确定。直至工单状态更新为审批中即可执行下一步。
若为数据导出,单击编辑导出设置,修改 SQL 语句,单击确定。直至工单状态更新为审批中即可执行下一步。
语法检查成功语义检查失败

单击编辑导入设置,修改导入文件,单击确定。直至工单状态更新为审批中即可执行下一步。
若为数据导出,单击编辑导出设置,修改 SQL 语句,单击确定。直至工单状态更新为审批中即可执行下一步。
6. 等待审批结果。
在左侧导航栏选择流程管理 > 工单列表,选择我的申请页签,在工单列表中查看工单状态。

审批中:表示工单正在审批中,待工单状态变更为执行队列中,则表示审批完成。审批完成后可执行下一步。
执行队列中:表示工单已审批完成,自动进入执行队列中。可执行下一步。
已驳回:表示工单已被驳回,可单击工单 ID 或在操作列单击查看,在工单详情页面右上方单击审批信息,查看审批意见。

7. 执行工单。
手动执行:申请工单时选择手动执行,可通过以下两种方式执行工单。
方式一:在左侧导航栏选择流程管理 > 工单列表,选择我的待办我的申请页签,在工单对应的操作列单击去执行,进入执行详情页面,在页面上方单击执行,即可立即执行。


方式二:在左侧导航栏选择流程管理 > 执行列表,选择执行队列中页签,在工单对应的操作列单击执行,在弹出的对话框中单击确定,即可立即执行。

自动执行:申请工单时选择自动执行,审批完成后,工单自动执行。可在工单列表 > 我的申请页面查看工单状态。
定时执行:申请工单时选择定时执行,审批完成后,按照设定的时间工单自动执行。可在工单列表 > 我的申请页面查看工单状态。
8. 查看执行结果。
在左侧导航栏选择流程管理 > 执行列表并选择执行历史页签,或在左侧导航栏选择流程管理 > 工单列表并选择我的申请页签,查看工单状态。
执行中:请继续等待执行结果,包括执行失败和已完成。
执行失败:可在执行历史页面单击执行 ID 或在操作列单击查看,查看 SQL 详情、执行失败原因及历史监控信息。

已完成:表示工单执行成功,可在执行历史页面单击执行 ID 或在操作列单击查看,查看执行详情及历史监控信息等。
9. (数据导出)下载数据导出文件。
9.1 在左侧导航栏选择流程管理 > 执行列表并选择执行历史页签,选择时间,执行工单对应的操作列单击下载。

9.2 在弹出的对话框中,下载格式为 .zip 的文件。
单击复制下载链接,在新的浏览器窗口打开并下载导出数据。
单击下载,下载文件。