我有一个sql过程代码。我们正在不同架构上迁移代码。我需要替换所有维度表模式。
实施例: 旧架构:DBO.ABC_DIM,DBO.XYZ_DIM
替换后:MART.ABC_DIM,MART.XYZ_DIM
任何人都可以通过正则表达式替换让我知道如何做到这一点。
由于 天空
答案 0 :(得分:1)
你必须使用: 在“查找内容”字段中:
(DBO)\.
和“替换为”字段:
MART\.
不要忘记将光标放在文件的开头。否则,替换在实际光标位置
之后开始编辑:
所以在这种情况下如果你有其他人,你可以使用:
查找字段:
\b(DBO\.)(.+?)_DIM\b
替换字段:
MART\.$2_DIM
有些人喜欢:
DBO.ABC_DIM, DBO.XYZ_DIM,
DBO.ABC_DTL, DBO.ABC_2_BCD
成为:
MART.ABC_DIM, MART.XYZ_DIM,
DBO.ABC_DTL, DBO.ABC_2_BCD
最后编辑:
以上失败的原因是:
DBO.ABC_DIM, DBO.XYZ_DIM,
DBO.ABC_DTL, DBO.ABC_2_BCD, DBO.ABC_DIM, DBO.XYZ_DIM,
DBO.ABC_DTL, DBO.ABC_2_BCD,
DBO.ABC_DIM, DBO.XYZ_DIM,
因为在第二行匹配 DBO.ABC_DTL,DBO.ABC_2_BCD,DBO.ABC_DIM 并且 DBO.ABC_DTL 变为 MART.ABC_DTL
所以正确的解决方案是:
查找字段:
(DBO\.)(.[^\.]+?)_DIM
替换字段:
MART\.$2_DIM
在此处查看匹配结果:http://refiddle.com/refiddles/596b348175622d74ff020000
答案 1 :(得分:0)
如果您在VIM中打开该架构,请按esc
然后按
:s%/DBO/MART
然后按Enter键
:s
(冒号和s)代替
/DBO
找到DBO
/MART
将其替换为MART
一旦您确认所有DBO都替换为MART,您需要按esc
和:wq