【发布时间】:2014-08-16 08:24:05
【问题描述】:
这是我的问题:我有一个目录,其中包含来自 Oracle Instant Client 的一堆示例代码。他们每个人都演示了一个简单的数据库操作。我的目标是改变他们所有的连接顺序。
它们有两种连接方式。要么他们做
EXEC SQL CONNECT :username IDENTIFIED BY :password;
或者他们会这样做
EXEC SQL CONNECT :uid;
在第一种情况下,我们在程序的前面定义了变量
char *username = "scott";
char *password = "tiger";
每当我遇到使用这个序列的程序时,我首先想更改密码,然后我想在上面两个下面添加一行以获得以下内容
char *username = "scott";
char *password = "newPassword";
char *sqlHost = "hostid";
那我需要把上面的连接顺序(我们是情况1)改成
EXEC SQL CONNECT :username IDENTIFIED BY :password USING :sqlHost;
如果我们是情况二,那么在程序的前面我们定义变量
char *uid = "scott/tiger";
这种情况更容易处理:我需要做的就是将定义更改为
char *uid = "scott/newPassword/hostid";
我可以保持连接顺序不变。
我不是要求有人为我写这整件事,只是为了给我一些指示。我一直在阅读一些 Perl 文档以获取想法,但我不确定如何动态更改文件光标,以便可以在匹配的模式之后直接插入一行。我也不完全确定如何让一个脚本区分这两种情况(再说一次,也许我不必这样做,假设我可以编写我的模式只匹配其中一种。)
我可以解决此问题的另一种方法是将它们全部更改为使用第二种类型的序列进行连接。在这种情况下,我想我可以根据需要插入一个声明 uid 的新行,然后修改连接顺序以始终采用第二种类型的形式。我还想删除username 和password 的先前变量声明。
谢谢。
【问题讨论】:
标签: perl replace scripting automation text-processing