当您需要将大批量数据以附件(SQL、CSV、Excel)形式快速导入数据库时,可以使用DMS的数据导入功能。
前提条件
数据库类型如下:
MySQL:RDS MySQL、PolarDB MySQL版、MyBase MySQL、PolarDB分布式版、AnalyticDB for MySQL、其他来源MySQL。
SQL Server:RDS SQL Server、MyBase SQL Server、其他来源SQL Server。
PostgreSQL:RDS PostgreSQL、PolarDB PostgreSQL版、MyBase PostgreSQL、AnalyticDB for PostgreSQL、其他来源PostgreSQL。
MariaDB:RDS MariaDB、其他来源MariaDB。
OceanBase。
PolarDB PostgreSQL版(兼容Oracle)。
达梦数据库。
DB2。
Oracle。
Redis。
MongoDB。
待导入数据的数据库已登录DMS。具体操作,请参见登录数据库。
已有目标数据库的变更权限。
注意事项
单次导入的SQL、CSV、Excel类型的文件不能超过5 GB。
DMS支持上传zip类型的附件。如果您需要在同一个工单中导入多个文件,可以将多个文件放在一个zip中,再进行上传。
数据导入功能暂不支持在同一个工单对多个数据库进行变更操作,如需对多个数据库进行变更请提交普通数据变更工单。具体操作,请参见普通数据变更。
若批量数据导入脚本中包含了结构变更SQL,即使实例已开启无锁结构变更,该结构变更SQL也只能通过原生方式执行,不会通过无锁结构变更的方式执行。
为避免执行批量数据导入过程中影响数据库性能,建议您使用性能较好的SQL语句,如
INSERT
,主键索引的UPDATE
和DELETE
。
操作步骤
本操作以管控模式为安全协同的RDS MySQL数据库为例介绍配置流程。
- 登录数据管理DMS 5.0。
单击控制台左上角的图标,选择
。说明若您使用的是非极简模式的控制台,在顶部菜单栏中,选择
。在数据变更工单申请页面,配置工单参数信息。部分参数说明如下:
参数项
说明
数据库
数据导入的目标数据库。仅支持选择一个数据库。
说明管控模式为自由操作或稳定变更的实例数据库需要登录后方可选择。
执行方式
工单的执行方式,系统默认选择审批通过后,提交者执行。其他方式:
审批通过后,自动执行。
最后一个审批人执行。
文件编码
数据库的文件编码,系统默认选择自动识别。其他取值:
UTF-8。
GBK。
ISO-8859-1。
导入模式
数据导入模式,当前支持两种导入模式:
极速模式:在执行阶段读取文件,将SQL语句直接执行到指定的目标库。该模式安全性相比安全模式要低,但是执行时效较高。
说明安全规则配置默认未开启支持极速模式导入数据。您可以在实例关联的
中开启该检测项。安全模式:预检查阶段会解析文件并将SQL或CSV数据缓存入库,执行时再从缓存库中读出来执行到指定的目标库。该模式安全性较好,但是执行时效相比极速模式要低。
文件类型
选中导入数据的文件类型:
SQL脚本:安全协同模式下,默认仅放开INSERT和REPLACE命令类型。如需调整,可以由DBA或管理员在安全规则 > SQL变更 > 批量数据导入中修改。
CSV格式:文件中的分隔符必须为逗号。
Excel格式:Excel文件中可以有表头(属性),也可以直接是数据。
目标表
选择导入数据的目标表。
说明当文件类型选择CSV或Excel格式时,会出现该参数项。
数据位置
选择数据的位置:
第1行为属性:表格首行是字段名。
第1行为数据:表格首行是数据。
写入方式
选择文件的写入方式:
INSERT:插入数据时数据库会检查主键(PrimaryKey),如果出现重复会报错。
INSERT_IGNORE:如果表中已经存在相同的记录,则忽略当前新数据。
REPLACE_INTO:如果表中已经有某行数据(根据主键或者唯一索引判断),则先删除此行数据,然后插入新的数据。
说明RDS MySQL、PolarDB MySQL版、PolarDB分布式版、AnalyticDB for MySQL、OceanBase数据库类型支持3种写入方式:
INSERT INTO
、INSERT IGNORE
、REPLACE INTO
。其他数据库仅支持INSERT INTO
写入。附件
支持上传本地文件和上传OSS文件。
如果您需要上传存储在OSS中的文件,则首先需要将目标OSS数据源录入至DMS。录入完成后,再单击上传OSS文件,选择目标Bucket并填入文件路径(例如
examplefolder/example.sql
)。说明支持SQL、CSV、TXT、XLSX和ZIP文件类型。
导入的附件最大不能超过5 GB。
录入OSS数据源的操作,请参见云数据库录入。
其他选项(可选)
选择是否忽略异常报错。
不忽略(不选中):系统默认。系统遇到异常会停止执行后续SQL并报错。
忽略(选中):系统执行失败会忽略异常,并继续执行后续SQL。
回滚SQL(可选)
文本:在下方输入框中填入回滚SQL。
附件:上传回滚SQL文件。
说明支持SQL、TXT和ZIP文件类型。
回滚文件最大不能超过15 MB。
变更相关人(可选)
设置的相关人员都可以查看工单,并协同工作,非相关人员则不能查看工单(管理员、DBA除外)。
单击提交申请,等待系统预检查通过,如果预检查失败,请根据提示检查失败原因后单击重试。
说明系统会预检查您上传的SQL,如果是CSV文件,会生成相应的
INSERT
语句。若在预检查的类型检查阶段出现报错,需要根据报错信息调整实例关联的安全规则。具体操作,请参见数据变更。
在审批区域,单击提交审批,在提示对话框中单击确认。
待审批通过后,在执行区域,单击执行变更。
在任务设置对话框中,选择工单的执行方式。
执行方式如下:
立即执行:系统默认。单击确定执行后,立即执行工单。
定时执行:选择任务开始执行时间。单击确定执行后,系统会在设定的时间自动执行任务。
说明执行期间,系统流式读取已解析的SQL,分批执行到数据库(每批大小1 MB)。
您可以在执行区域,查看任务执行状态、任务SQL检查详情和调度日志。
已暂停的任务,重启后,会根据导入模式选择从头执行任务,还是从暂停位置执行。
极速模式:暂停任务后重启,将从头开始执行脚本或导入数据文件。
安全模式:暂停任务后重启,将从暂停位置继续执行脚本或导入数据文件。
当出现任务执行完成提示后,表示数据导入工单完成。
(可选)查询导入的数据。
前往SQL Console页面查询导入的数据。具体操作,请参见SQL Console初体验。
示例文件
常见问题
Q:执行数据导入时出现permission denied for schema XXXXX报错如何处理?
A:报错显示当前在DMS登录的数据库账号权限不足。您可以尝试在DMS中登录高权限的数据库账号,再重试导入,或尝试将数据导入到其他公共数据库。切换数据库账号操作,请参见编辑实例。
如果上述方法仍无法解决问题,可以尝试使用数据传输服务DTS进行数据迁移。更多信息,请参见迁移方案概览。
Q:数据导入工单预检查失败,提示不允许提交XXXX变更语句,该如何处理?
A:管理员或DBA需要修改SQL变更安全规则,允许在导入时执行某类型SQL。如下以补充允许提交CREATE_TABLE为例:
在DMS控制台中,找到并进入安全规则功能页面。
编辑目标规则,在规则详情页左侧区域单击SQL变更。
选择批量数据导入规则,并单击允许批量导入插入语句规则右侧的编辑。
增加CREATE_TABLE类型的SQL,单击提交。更多信息,请参见SQL变更。
规则修改后,请您返回到数据导入工单详情页,在预检查区域单击重试。
Q:如果待上传的附件大于5 GB,该如何进行操作?
A:您可以根据实际的业务情况选择操作方法:
拆分附件,提交多个工单进行上传。
使用Navicat远程连接数据库,再进行上传附件。