當前位置:首頁 » 操作系統 » shell查詢資料庫

shell查詢資料庫

發布時間: 2023-06-07 20:04:00

① 在shell腳本中使用 isql 執行SQL語句 查詢sybase資料庫中滿足條件的記錄條數,怎麼把查詢結果賦給變數

注意此處:
isql -U natuser -P zjtt@nat -S natdb <<END
如下供參考
·1 若要重定向到文件
isql -U natuser -P zjtt@nat -S natdb <<END >out.txt
即將查詢結果重定向到out.txt文件中

·2若要輸出至變數
isql -U natuser -P zjtt@nat -S natdb <<END |read xarg

·3若要循環輸出至變數,可參照read方式類推

② 達夢資料庫shell腳本怎麼獲取查詢語句結果集

方式一

當然是windows電腦安裝達夢管理工具,直接把腳本貼進去執行,但避免不了出現誤操作

在這里插入圖片描述

方式二

使用shell腳本執行sql

1. 先找到達夢資料庫安裝位置吧

[root@localhost ~]# ss -nlp |grep 5236
tcp LISTEN 0 128 [::]:5236 [::]:* users:(("dmserver",pid=103380,fd=4))
[root@localhost ~]# ps -ef|grep dmserver
root 85093 66993 0 17:56 pts/6 00:00:00 grep --color=auto dmserver
dmdba 103380 1 8 13:36 ? 00:23:18 /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdbms/data/DAMENG_JW/dm.ini -noconsole
1
2
3
4
5
1
2
3
4
5
2. 直接在linux上執行shell命令執行sql腳本

2.1 # disql username/password:port

使用這個命令可以進入sql控制台

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236

伺服器[LOCALHOST:5236]:處於普通打開狀態
登錄使用時間 : 5.524(ms)
disql V8
SQL>
進入SQL>後:
直接輸入sql語句,使用英文分號結尾,回車執行。
使用「`sql文件路徑」,可以執行sql腳本文件,注意前面有一個小撇(esc和tab中間的鍵)
使用「start sql文件路徑」,可以執行sql腳本文件。
2.2 # disql username/password:port `sql文件位置

使用這個命令可以執行sql腳本

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236 \`sql/test.sql
[root@localhost sql]#
1
2
1
2
但需注意
這個腳本執行完sql會停留在sql執行行,如需執行完返回到shell命令行,則需要在sql文件結尾添加:exit; 。
這個shell語句不能用start執行sql文件,只能使用「`」,並且前面需要添加轉義字元「\」。
2.3 達夢sql腳本注意事項

目前發現-創建schema語句以及執行過程結尾,都需要添加「/」結束

例如執行以下語句,回車執行,一直在輸出數字,直到輸入「/」,再回車執行,才執行成功。

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236

伺服器[LOCALHOST:5236]:處於普通打開狀態
登錄使用時間 : 6.121(ms)
disql V8
SQL> create schema test;
2
3 /
操作已執行
已用時間: 26.698(毫秒). 執行號:700604.
SQL>
sql腳本示例:

-- 創建schema
CREATE SCHEMA DB_ZFBA_MOBILE;
/
-- 執行過程
begin
if exists(select 1 from DBA_TAB_COLUMNS where OWNER='DB_ZFBA_MOBILE' AND TABLE_NAME='T_ZJTQD') then
EXECUTE immediate 'drop table DB_ZFBA_MOBILE.T_ZJTQD';
end if;
end;
/
create table DB_ZFBA_MOBILE.T_ZJTQD
(
"C_BH" char(32) NOT NULL, -- 主鍵
"C_BH_AJ" varchar2(32) NULL, -- 案件編號
……
"DT_ZHXGSJ" datetime NULL, -- 最後修改時間
constraint PK_T_ZJTQD primary key( C_BH )
);
sql文件結尾添加exit;,保證多個sql文件執行不會中斷

3. 編寫shell腳本

注意:shell腳本一定在linux中編寫,windows編寫的有些語句執行不成功(目前原因未知)
例如: a=a b=b c=$a$b echo $c 在windows下編寫,linux中執行完會輸出b
#!/bin/bash

# 請先配置資料庫連接信息,再執行此腳本
DM_PATH=/home/dmdba/dmdbms #達夢資料庫的安裝位置
USERNAME=cpuser #達夢資料庫連接用戶名
PASSWORD=cpuser123 #達夢資料庫連接密碼
PORT=5236 #達夢資料庫連接埠號

# 下面的信息請不要隨意修改
CONNECT_INFO=$USERNAME/$PASSWORD:$PORT
echo "連接信息:"$CONNECT_INFO
# STEP 1
echo "【開始執行】---- sql/02_創建資料庫對象/00.CS_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_創建資料庫對象/00.CS_GSYS.sql >> DB_DM.log
echo "【執行完成】---- sql/02_創建資料庫對象/00.CS_GSYS.sql"

# STEP 2
echo "【開始執行】---- sql/02_創建資料庫對象/01.CT_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_創建資料庫對象/01.CT_GSYS.sql >> DB_DM.log
echo "【執行完成】---- sql/02_創建資料庫對象/01.CT_GSYS.sql"

# STEP 3
echo "【開始執行】---- sql/02_創建資料庫對象/02.CC_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_創建資料庫對象/02.CC_GSYS.sql >> DB_DM.log
echo "【執行完成】---- sql/02_創建資料庫對象/02.CC_GSYS.sql"

# STEP 4
echo "【開始執行】---- sql/02_創建資料庫對象/03.CI_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_創建資料庫對象/03.CI_GSYS.sql >> DB_DM.log
echo "【執行完成】---- sql/02_創建資料庫對象/03.CI_GSYS.sql"

# STEP 5
echo "【開始執行】---- sql/03_初始化數據/02.I_T_Aty_CodeType_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化數據/02.I_T_Aty_CodeType_GSYS.sql >> DB_DM.log
echo "【執行完成】---- sql/03_初始化數據/02.I_T_Aty_CodeType_GSYS.sql"

# STEP 6
echo "【開始執行】---- sql/03_初始化數據/02.I_T_Aty_Code_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化數據/02.I_T_Aty_Code_GSYS.sql >> DB_DM.log
echo "【執行完成】---- sql/03_初始化數據/02.I_T_Aty_Code_GSYS.sql"

# Complete
echo "【SQL全部執行完成】---- 日誌請查看DB_DM.log"
執行完成後,通過shell控制台和DB_DM.log日誌可以分析sql腳本是否執行成功。

③ Xshell怎麼連接資料庫

1、首先運行Xshell客戶端,沒有安裝的同學,請下載後安裝;


④ 如何通過SHELL腳本取資料庫查詢內容

db2connectto[dbname]

db2"selectmin(a)fromb;">t.txt

db2terminate

date=`catt.txt|tail-2|head-1`

echo$date

⑤ 急,,,如何用shell變數接收db2資料庫查詢的結果

這樣的shell我寫過。沒什麼好辦法獲取sql查詢出來的結果。
我用個的一個比較勉強的辦法,可以自己添加一個特殊值,然後使用Grep來過濾獲取。

⑥ 寫個shell腳本連接oracle資料庫查詢某表數據導出為txt文件,再發送到第三

1、簡單的單列
#!/bin/sh
sqlplus 'user001/12345678'<< EOF
set define off
set hea off
spool vip1.txt
select username from ACCOUNT where LEVEL=7;
spool off
quit;
EOF
sed -i 's/[ ]*//g' ~/vip1.txt
sed -i '/^$/d' ~/vip1.txt
sed -i '1d' ~/vip1.txt
sed -i '$d' ~/vip1.txt
scp -P22 ~/vip1.txt [email protected]:/root
2、復雜的多列
#!/bin/sh
cid=$1;
today=`date +%Y-%m-%d-%H.%M`
ym=`date +%Y%m`
ymd=`date -d -1days +%Y%m%d`
last_ym=`date -d last-month +%Y%m`
next_ym=`date -d next-month +%Y%m`
file=chat_recorder_${cid}_20140707-11.xls

if [[ $1 == '' ]];then
echo "Usage: $0 company_id "
exit 0;
fi
sqlplus 'user002/12345678' << EOF
set linesize 200
set term off verify off feedback off pagesize 999
set markup html on entmap ON spool on preformat off
alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
spool ${file}
select a.*,b.* from recorder_${ym} a,t_${ym} b where a.company_id='$cid' and a.create_time between TO_DATE('2014-07-07 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and TO_DATE('2014-07-12 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and a.chat_id=b.chat_id order by b.chat_id ;
spool off
quit;
EOF
sed -i '/select/d' $file
zip -r ${file}.zip $file
scp -P22 ${file}.zip [email protected]:/opt

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:619
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:347
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:62
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:288
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:781
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:334
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:197
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:791
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:350
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:578