Database 在pgadmin中重构更多函数的最佳方法
我是PostgreSQL新手,我一直在寻找一种在多个函数中查找和替换单词(函数名)的好方法 我正在使用最新版本的PostgreSQL 有人知道我怎样才能做好吗 感谢pgadmin为此类操作提供了“查找和替换”窗口。保持中立的方法(如果pgadmin提供-那么我不能说这是一个坏的做法),您可以复制pg_目录中的所有函数定义,并使用此方法在函数体中进行“批量”对象重命名。或者选择“替换”,然后运行更改的定义 这就是为什么我建议不要这样做。假设您希望在所有函数中将Database 在pgadmin中重构更多函数的最佳方法,database,postgresql,pgadmin,Database,Postgresql,Pgadmin,我是PostgreSQL新手,我一直在寻找一种在多个函数中查找和替换单词(函数名)的好方法 我正在使用最新版本的PostgreSQL 有人知道我怎样才能做好吗 感谢pgadmin为此类操作提供了“查找和替换”窗口。保持中立的方法(如果pgadmin提供-那么我不能说这是一个坏的做法),您可以复制pg_目录中的所有函数定义,并使用此方法在函数体中进行“批量”对象重命名。或者选择“替换”,然后运行更改的定义 这就是为什么我建议不要这样做。假设您希望在所有函数中将长度(更改为新长度() t=# sel
长度(
更改为新长度(
)
t=# select proname,replace(prosrc,'length(','new_length(') from pg_proc where prosrc like '%length(%' limit 3;
proname | replace
------------+--------------------------------------------
bit_length | select pg_catalog.octet_new_length($1) * 8
bit_length | select pg_catalog.octet_new_length($1) * 8
bit_length | select pg_catalog.new_length($1)
(3 rows)
正如您所见,您影响的名称多于长度。当然,您可以使用.length(
来避免octet\u length
和bit\u length
,但不能保证您不在代码中使用length
(没有pg\u目录)。
).等等。所以,如果你盲目地替换所有发生的事件,你就有可能中断代码。如果你检查所有发生的事件,你还是会一个接一个地进行检查。所以,也许只需检查每一个事件,并在更改之前检查每一个
最后,我将使用
psql
进行此类工作,或者至少将其与pgadmin混合使用。因为psql
有一组非常有用的元命令。例如,只需sf fn_name
即可获得函数定义。运行该定义会将其置于历史记录中,可以在vim或任何其他编辑器中轻松编辑并使用更改的名称重新运行。(vim提供了:%s/oldname/newname/g
这是相同的查找和替换,等等…查找和替换?。是的,对不起,我已更正了问题。否,否-有一个工具。按Ctrl+F并查看名称“查找和替换”好的,我已经知道了,但是我正在寻找一种方法来重构更多的函数,而不是一次重构一个。你应该在版本控制系统(git,svn,…)中存储的函数的源代码中这样做