shell腳本動態拼寫sql
-h 是遠程連接訪問mysql 127.0.0.1 是本機ip
寫入shell可以這樣 :
mysql -u你的用戶名 -p密碼 <<END
mysql命令.....
exit;
END
/home/zyxf/BinaryConverter/BinaryConverter -af -h127.0.0.1 -uroot -w123456 -d${db}
不清楚是什麼 看錶面意思像是將資料庫轉換成二進制保存的意思。 -af 這些應該是BinaryConverter 這個命令的參數你可以嘗試man BinaryConverter來查看他。
B. 執行SHELL腳本,傳入參數,參數應該被裡邊的sql所用,請問怎麼寫
變數在sh中用$1,$2,$3... 順序表示傳入的參數。
sql寫法:
select dept_id,dept_name from department
where dept_id=$1
C. linux shell執行sql
1.shell中執行sql
export ORACLE_SID=ORCL
sqlplus -S /nolog @/home/oracle/test.sql #注意此處執行sql腳本的方法 -S 表示以靜默方式執行
exit
2.test.sql中要加入連接
conn scott/tiger@orcl
set time on
.......
exit;
D. shell腳本里執行多個sql語句問題
你沒有理解輸入重定向的概念。在你上面的代碼中,mysql -uDDAP -p$2是包含在輸入重定向范圍內的,所以不會提示你輸入密碼的。
你的$1 和$2也沒有定義,可以參考如下寫法:
#!/bin/sh
read -p "please input root password" pwd
mysql -uroot -p$pwd << EOF
\. /usr/src/DDAP-1.CreateUser.SQL
\. /usr/src/DDAP-2.CreateDatabase.SQL
\. /usr/src/DDAP-3.CreateTable.SQL
\. /usr/src/DDAP-4.CreateProcereAndFunction.SQL
\. /usr/src/DDAP-5.CreateData.SQL
EOF
E. 達夢資料庫怎麼寫shell腳本,怎麼通過shell腳本調用sql腳本
通過shell腳本調用sql腳本:
1、shell腳本調用sql腳本
#首先編輯sql文件
oracle@SZDB:~> more dept.sql
connect scott/tiger
spool /tmp/dept.lst
set linesize 100 pagesize 80
select * from dept;
spool off;
exit;
#編輯shell腳本文件,在shell腳本內調用sql腳本
oracle@SZDB:~> more get_dept.sh
#!/bin/bash
# set environment variable
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
export ORACLE_SID=CNMMBO
sqlplus -S /nolog @/users/oracle/dept.sql #注意此處執行sql腳本的方法 -S 表示以靜默方式執行
exit
#授予腳本執行許可權
oracle@SZDB:~> chmod 775 get_dept.sh
-->執行shell腳本
oracle@SZDB:~> ./get_dept.sh
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
2、shell腳本調用rman腳本
#首先編輯RMAN腳本
oracle@SZDB:~> more rman.rcv
RUN {
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/users/oracle/bak/%d_%F';
ALLOCATE CHANNEL CH1 TYPE DISK MAXPIECESIZE=4G;
ALLOCATE CHANNEL CH2 TYPE DISK MAXPIECESIZE=4G;
SET LIMIT CHANNEL CH1 READRATE=10240;
SET LIMIT CHANNEL CH1 KBYTES=4096000;
SET LIMIT CHANNEL CH2 READRATE=10240;
SET LIMIT CHANNEL CH2 KBYTES=4096000;
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
BACKUP
DATABASE FORMAT '/users/oracle/bak/%d_FULL__%U';
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
BACKUP ARCHIVELOG ALL FORMAT '/users/oracle/bak/%d_LF_%U' DELETE INPUT;
DELETE NOPROMPT OBSOLETE;
RELEASE CHANNEL CH1;
RELEASE CHANNEL CH2;
}
#編輯shell腳本文件,在shell腳本內調用rman腳本
oracle@SZDB:~> more rman_bak.sh
#!/bin/bash
# set environment variable
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
export ORACLE_SID=CNMMBO
$ORACLE_HOME/bin/rman target / cmdfile=/users/oracle/rman.rcv log=/users/oracle/bak/rman.log
exit
#授予腳本執行許可權
oracle@SZDB:~> chmod 775 rman_bak.sh
#執行shell腳本
F. shell腳本中怎麼寫sql語句
mysql -uroot -pxxx dbname -e "select xxx from xxx;"