shell循環讀取資料庫資料庫數據
① Linux shell腳本for循環中in的[數據列表]從文件中取得
for i in $(cat test)
可以試試看, for之前可以指定分隔符號.
另外一般用 while read 讀取文件
還有其實上面兩種都不好, 現在主流的做法還是awk和sed處理文件, 功能強 安全
② centos怎麼用shell讀取資料庫
用MySQL命令
mysql -umyuser -pmypass -e "select id, email from mail"
③ shell操作資料庫
mysql -hhostname -Pport 
-uusername -ppassword -e 
相關mysql的sql語句,不用在mysql的提示符下運行mysql,即可以在shell中操作mysql的方法。
#!/bin/bash
HOSTNAME="192.168.111.84" 
 #資料庫信息
PORT="3306"
USERNAME="root"
PASSWORD=""
DBNAME="test_db_test" 
 #資料庫名稱
TABLENAME="test_table_test" 
#資料庫中表的名稱
#創建資料庫
create_db_sql="create 
database IF NOT EXISTS ${DBNAME}"
mysql -h${HOSTNAME} 
-P${PORT} -u${USERNAME} -p${PASSWORD} -e "${create_db_sql}"
#創建表
create_table_sql="create 
table IF NOT EXISTS ${TABLENAME} ( name varchar(20), id int(11) default 0 
)"
mysql -h${HOSTNAME} 
-P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e 
"${create_table_sql}"
#插入數據
insert_sql="insert into 
${TABLENAME} values('billchen',2)"
mysql -h${HOSTNAME} 
-P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e 
"${insert_sql}"
#查詢
select_sql="select * from 
${TABLENAME}"
mysql -h${HOSTNAME} 
-P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e 
"${select_sql}"
#更新數據
update_sql="update 
${TABLENAME} set id=3"
mysql -h${HOSTNAME} 
-P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e 
"${update_sql}"
mysql -h${HOSTNAME} 
-P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e 
"${select_sql}"
#刪除數據
delete_sql="delete from 
${TABLENAME}"
mysql -h${HOSTNAME} 
-P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e 
"${delete_sql}"
mysql -h${HOSTNAME} 
-P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e 
"${select_sql}"
④ 求一份shell腳本,需求是:從Oracle資料庫中提取一個表中的數據輸出到文件,並且每條記錄一行;
應用spool命令,大量數據匯出很方便,腳本內容大致如下:
--============================================
#!/bin/sh
#第一步
sqlplus -s 用戶名/密碼@服務名<<EOF 
spool customers.sql --輸出文件路徑及名稱
set trimspool on
set linesize 8000
set pagesize 50000
set newpage 1
set heading off
set term off
set feedback off
set sqlblankline off
SELECT A              || '|+|' ||  --欄位A
              B              || '|+|' ||  --欄位B
              C              || '|+|' ||  --欄位C
              D              || '|+|' ||  --欄位D
              E              || '|+|' ||  --欄位E
              F              || '|+|' ||  --欄位F
             G              || '|+|' ||  --欄位G
            TO_CHAR(H,'YYYYMMDD HH:MM:SS')             || '|+|'  --欄位H,可以使用函數
FROM CUSTOMERS;--表名
spool off
exit
EOF
--=======================
其中'|+|'為分隔符,也可以換成你說的逗號,即','。調用該腳本後,在根目錄下生成customers.sql文件。
⑤ 如何在shell 下 查詢資料庫內容
db2connectto[dbname]
db2"selectmin(a)fromb;">t.txt
db2terminate
date=`catt.txt|tail-2|head-1`
echo$date
⑥ 求個shell獲取資料庫表值並指向輸出的方法
mysql -uroot -p123456 -e "select * from db.table" >> out.txt
⑦ shell 如何循環讀取命令的執行結果
for i in `ls`
do
echo $i
done
⑧ shell 操作hirdb資料庫,得到查詢結果。
|sql文改成 select "count:",count(*) from custom;
抽出的結果用grep命令處理
cat count_sql.txt | grep "count:" | awk '{print $2}'
大概是這樣,如果得到的結果里有兩行包括內"count:" ,那就容稍微改下
cat count_sql.txt | grep "count:" | tail -1 | awk '{print $2}'
⑨ shell腳本判斷mysql所有資料庫的表數據是否相等
連接資料庫首先、、
v=$(mysql -u$user -p$pass -D $db -e "select count(*) from user;")
判斷 host 是否為0 就可以
if [ $v -eq 0 ]
then  echo "NOT EXISTS"
fi
