在sqlplus文件中隐藏SQL单词。

12 浏览
0 Comments

在sqlplus文件中隐藏SQL单词。

我想要隐藏/移除文件raw.txt中的"SSQL> SQL> SQL> SQL> 2 3 4 5 6 7 "内容。

我的步骤如下:

sqlplus -s /nolog <

发送中

email="abcd1234@gmail.com dsasd@gmail.com.com"
DBpath=/opt/util/sqlplus10g
interFile=/archive/equipment/EI/Jovan/dataMinerUserLogon/raw.txt
FILEPATHDATEFORMAT=`TZ=GMT-8 date +%Y%m%d%H`
FILENAME=logonDetails_${FILEPATHDATEFORMAT}.csv
FILEDIR="/archive/equipment/EI/Jovan/dataMinerUserLogon/${FILENAME}"
EMAILBODY="/archive/operations/EI/scripts/eisupport_menu/EQPT-VERSION/WOSPC/CT3/output/SystemGeneratedMessageTemplate.txt"
#执行SQL文件
${DBpath} < /archive/equipment/EI/Jovan/dataMinerUserLogon/logonuser.sql > ${interFile} 
awk 'NR > 17 { print }' < ${interFile} > ${FILEDIR}

我的结果

PPM417                             |2  |2018 JUN 20 09:24:31      |BALASUBRAMANIAM A/L MANICKAM                                                              |CL$BAM          |F8031299R              |PSA

0
0 Comments

在sqlplus文件中隐藏SQL单词的问题是由于在执行脚本时出现的SQL提示导致的。解决这个问题的方法是使用sqlplus可执行文件的-silent选项来抑制SQL提示。可以将其缩写为-s。

将-silent选项放在哪里?

在SQL*Plus命令行上。点击这里查看(有点过时的)文档 - 我认为没有太多改变。祝你好运。

所以我只需要在我的脚本中加入 " sqlplus -s /nolog <<EOF " 就可以了吗?

然后我应该把它放在哪里?

- 它不是放在你的.sql脚本文件中,而是放在你的shell脚本中,如 ${DBpath} -s < /archive...。(假设该文件的前两行是你的凭据;如果添加/nolog,那么这两行将变为一个明确的connect命令。)

0
0 Comments

问题的原因是在执行SQL脚本时,通过在脚本文件中直接包含用户名和密码的方式来连接数据库,这样的做法不安全。解决方法是在执行脚本的shell脚本中使用sqlplus命令的-s选项来隐藏SQL相关的信息和提示消息,以及使用/nolog选项来避免在启动时提示输入用户名和密码。

在shell脚本中执行SQL文件的代码如下:

#执行SQL文件
${DBpath} -s < /archive/equipment/EI/Jovan/dataMinerUserLogon/logonuser.sql > ${interFile}

这段代码中的-s选项会隐藏SQL*Plus的信息和提示消息。

另外,如果在交互式会话中使用/nolog选项,需要显式连接到数据库,示例如下:

> sqlplus /nolog
SQL*Plus: Release 12.1.0.2.0 Production on Wed Jun 20 10:13:45 2018
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
SQL> connect hr/hr
Connected.
SQL>

当前的代码中,SQL脚本的前两行是用户名和密码,如果同时使用/nolog选项,那么SQL脚本需要进行修改,示例如下:

connect your_username/your_password
set heading off
set pagesize 0
set feedback off
...

需要注意的是,将凭据直接嵌入到文件中并不安全。

0