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