Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在pgadmin中重构更多函数的最佳方法_Database_Postgresql_Pgadmin - Fatal编程技术网

Database 在pgadmin中重构更多函数的最佳方法

Database 在pgadmin中重构更多函数的最佳方法,database,postgresql,pgadmin,Database,Postgresql,Pgadmin,我是PostgreSQL新手,我一直在寻找一种在多个函数中查找和替换单词(函数名)的好方法 我正在使用最新版本的PostgreSQL 有人知道我怎样才能做好吗 感谢pgadmin为此类操作提供了“查找和替换”窗口。保持中立的方法(如果pgadmin提供-那么我不能说这是一个坏的做法),您可以复制pg_目录中的所有函数定义,并使用此方法在函数体中进行“批量”对象重命名。或者选择“替换”,然后运行更改的定义 这就是为什么我建议不要这样做。假设您希望在所有函数中将长度(更改为新长度() t=# sel

我是PostgreSQL新手,我一直在寻找一种在多个函数中查找和替换单词(函数名)的好方法

我正在使用最新版本的PostgreSQL

有人知道我怎样才能做好吗

感谢pgadmin为此类操作提供了“查找和替换”窗口。保持中立的方法(如果pgadmin提供-那么我不能说这是一个坏的做法),您可以复制pg_目录中的所有函数定义,并使用此方法在函数体中进行“批量”对象重命名。或者选择“替换”,然后运行更改的定义

这就是为什么我建议不要这样做。假设您希望在所有函数中将
长度(
更改为
新长度(

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,…)中存储的函数的源代码中这样做