我正在努力将数据库迁移到sql项目中,需要用SQLCMD变量替换所有跨数据库调用实例,并且正在努力编写正则表达式以帮助我找到我仍需要更新的地方
在SQL中,我们有以下内容:
MyOtherDatabase.MySchema.MyTable
[MyOtherDatabase].MySchema.MyTable
我需要改为:
[$(MyOtherDatabase)].MySchema.MyTable
到目前为止,我已经提出了以下正则表达式:
([^(]M|^M)yOtherDatabase
找到使用“MyOtherDatabase”的所有地方,并且没有被变量替换。
但是,它也在SQL评论中提到它,例如:
-- I don't want to find MyOtherDatabase in this line
和
FROM ADifferentPlace -- Used to be MyOtherDatabase
如果这只是几个例子,我会忍受它,但我现在有560个匹配,其中大部分是上面的一个或另一个,这使得人为错误很容易进入方式。
我在Visual Studio 2015的“搜索”框中使用此正则表达式,并勾选“使用正则表达式”复选框。
任何建议都会有所帮助!
修改
还需要找不到以下内容:
from MyTable -- from MyOtherDatabase.MySchema.MyTable
答案 0 :(得分:2)
如果您的环境支持可变长度负面反馈,您可以使用以下内容来避免匹配任何已注释的部分:
search for (?<!--.*)MyOtherDatabase(?=]?\.)
replace by $(MyOtherDatabase)
如果没有,您仍然可以从头开始匹配行:
search for ^((?:[^-]|-[^-])*)MyOtherDatabase(]?\.)
replace by \1$(MyOtherDatabase)\2