【SQL】SQL脚本的导出,列模式改写及导入(UltraEdit);

一、问题

我需要从数据库导出数据,然后导入数据到另外一个库;这里有个重要的问题:主键冲突,之前我们已经说过了主键冲突如何解决,详情点这里;这里,我们要讲的是,如何使用Uedit的列模式来修改数据;

二、思路

使用UltraEdit(下载地址)这个工具的【列模式】来修改固定写死的字段,将其替换为活的主键;
原文件中的数据如下:

insert into user 
values('1','张三','男');
insert into user 
values('1','李四','女');
insert into user 
values('1','王五','男');
...
insert into user 
values('999','二狗子','男');

这里,我们发现,如果用列模式,主键的位数不一样,并且数量比较多(有999个),首先是列不齐,其次是数据多,按ctrl+鼠标左键从列最上方,下拉到列最下方,手都酸死了,都还没有全部选中,所以这种笨方法不可行;

所以,我们得换一种方式;通过观察可知,主键附近的数据规律:都是【values(’】这样的格式,主键后面是【’,’】这样的东西,中间的主键才是变化量;所以,我们如果能找到正则表达式,利用这样的规律就可以解决批量处理任务,将写死的主键,改成【(select max(id)+1 from user)】这里一定要注意,使用SQL语句替换字段,外面一定要加小括号,否则会报错;

三、操作

幸运的是UEdit支持正则表达式替换方法;
①按住ctrl+R,打开替换窗口;
②点击下图中的小齿轮;
【SQL】SQL脚本的导出,列模式改写及导入(UltraEdit);_第1张图片
③然后点击,下拉选中【正则】;
【SQL】SQL脚本的导出,列模式改写及导入(UltraEdit);_第2张图片
④一定要选中,否则不支持正则表达式,会报错如下;
【SQL】SQL脚本的导出,列模式改写及导入(UltraEdit);_第3张图片

⑤我们在上方的原值输入【values(’*’),’】,然后在下方的将要替换成的新值处输入【values(’(select max(id)+1 from user)’),’】
【SQL】SQL脚本的导出,列模式改写及导入(UltraEdit);_第4张图片

⑥成功~
【SQL】SQL脚本的导出,列模式改写及导入(UltraEdit);_第5张图片

你可能感兴趣的:(【提高】,【Oracle】,【MySQL】,【PL/SQL】)