1. 为什么你需要精准控制数据导出?
做数据库运维或者数据迁移的朋友,肯定都遇到过这种头疼事:老板或者业务方突然要你从生产库导出一部分数据,可能是给测试环境用,也可能是做数据分析。你一看,好家伙,几百张表,几十个G的数据,全库导出?时间太长,磁盘也吃不消。更常见的是,你只想导出最近三个月的数据,或者只想导出除了用户日志表以外的所有核心业务表。这时候,如果你只会用最基础的 dexp 全库导出命令,那可就抓瞎了,要么导出一堆没用的“垃圾数据”,要么就得手动写一堆复杂的脚本去筛选,费时费力还容易出错。
达梦数据库7(DM7)自带的逻辑备份还原工具 dexp 和 dimp,功能其实非常强大,远不止“全库导出导入”这么简单。它提供了一系列精细化的参数,让你能像外科手术刀一样,精准地切割你需要的数据范围。今天,我就结合自己这些年踩过的坑和总结的经验,给大家详细拆解5种最实用、最高效的精准导出方法。不管你是想排除掉几张无关紧要的大表,还是想只导出某几张特定表的结构,甚至是按自定义的SQL条件导出数据,看完这篇,你都能轻松搞定。
这五种方法分别是:排除特定表导出、包含特定表导出、仅导出表结构、导出指定表以及按查询条件导出。每一种方法我都会配上详细的命令示例、参数解读、实战注意事项,以及我实际使用时遇到的一些“坑”和解决方案。咱们的目标就一个:让你看完就能上手,用最少的命令,干最精准的活。
2. 环境准备与工具初识
在开始“手术”之前,我们得先认识一下手里的“手术刀”——dexp(DM Export)和 dimp(DM Import)。它们是达梦数据库命令行工具包里的核心成员,通常位于达梦安装目录的 bin 文件夹下,比如 /opt/dmdbms/bin。使用前,确保你已经设置了正确的环境变量,或者能通过绝对路径访问到它们。
dexp 工具的基本命令格式长这样:
./dexp KEYWORD=value 或 KEYWORD=(value1,value2,...)
它通过一系列 KEYWORD=value 形式的参数来控制导出行为。这里有几个必须搞清楚的基础参数,它们是所有高级操作的地基:
- userid:连接字符串。格式是
用户名/密码@主机:端口。如果是在数据库服务器本机操作,可以省略@主机:端口,简写为用户名/密码。这是执行任何导出操作的前提。 - directory:导出文件存放的目录。这个目录必须是数据库服务器操作系统用户(通常是
dmdba)有写权限的路径。我一般习惯用/home/dmdba/backup或者/dmdata/dump。 - file:导出的数据文件名称。你可以指定一个具体的名字,比如
mydata.dmp。如果不指定,dexp会生成一个默认名字。 - log:导出过程的日志文件名称。这个参数极其重要! 导出是否成功,中途出了什么问题,全都记录在这个日志文件里。每次操作都务必指定,方便事后排查。
- schemas:要导出的模式(schema)列表。模式可以理解为用户拥有的数据库对象的集合。如果你想导出某个用户下的所有对象,就指定这个参数。
光说可能有点抽象,我举个最简单的全模式导出例子,帮你建立感觉。假设我们数据库里有个用户叫 CZJ,密码是 dmdbacczw,我们想把他拥有的所有东西(表、视图、数据等等)都导出来,放到 /home/backup 目录下:
cd /opt/dmdbms/bin
./dexp userid=CZJ/dmdbacczw directory=/home/backup file=czj_full.dmp log=czj_full.log schemas=CZJ
执行这条命令后,工具会开始工作,并在屏幕上和日志文件 czj_full.log 里输出进度信息。如果一切顺利,你会在 /home/backup 目录下找到 czj_full.dmp 这个数据文件。这个文件就是后续所有精准操作的基础素材库。理解了这个基础命令,我们就可以开始玩点更花的了。
3. 方法一:排除特定表导出(exclude)
先说一个我最常用的场景:做全库逻辑备份,但有几张“巨无霸”日志表或者历史归档表,数据量特别大,而且对当前备份来说不是必需的。全库导出带上它们,耗时剧增,备份文件也膨胀得厉害。这时候,exclude 参

696

被折叠的 条评论
为什么被折叠?



