2019年7月11日木曜日

Shell scripts for MariaDB


1.mariaDBをログインしないでShell Scriptで使う例


#!/bin/bash

# variable check
if [ $# -ne 2 ]; then
    echo -n "Usage: "
    echo -n `basename $0`
    echo  " target-clolumn target-word"
    exit 1
fi

DB=データベース名
USER=ユーザ
PW=パスワード
TBL1=テーブル名
#CLMS1="tana, date, hinc, kata, katad"
CLMS1="tana, hinc, kata, katad"

mysql -u $USER -p$PW $DB << EOS
#select count(*) from $TBL1 where $1 like "$2";
select $CLMS1 from $TBL1 where $1 like "$2";
#show columns from zaiko;
EOS

上記を呼び出して使うShell Script

#!/bin/bash

DT=`cat ./target1.txt`
while read line
do
    #echo -------------------------------------------------
    tt=$line
    echo ">>> $tt"
    ./slct01.sh kata $tt
    #echo $line
done << FILE
$DT
FILE

2.バックアップ用のShell script

#!/bin/sh
# Set mask for other user cann't read
umask 077

# backup file
# Retention period
period=31

# directory for backup files
dirpath='/home/pi/backup/mysql'

# backup file naming
filename=`date +%y%m%d`

#DB=データベース名
USER=ユーザ
PW=パスワード

# excute
mysqldump --opt --all-databases --events --default-character-set=binary -u$USER --password=$PW | gzip > $dirpath/$filename.sql.gz

# delete old backup files
oldfile=`date --date "$period days ago" +%y%m%d`
rm -f $dirpath/$oldfile.sql.gz

3.テストデータを insert する時の例

例は、2つのテーブルにテスト用の値を設定している。
テーブルのデータを削除するのは、

truncate seibans;
truncate  counters;

#!/bin/bash

DB=データベース名
USER=ユーザ
PW=パスワード
TBL1=seibans
TBL2=counters

# 配列宣言(-a)
declare -a sbn=()
# 初期化
declare -a sbn=("11111-11" "12345-76" "88888-99" "12345-56" "12345-89" "99999-00" "12345-66" "19625-01" "12345-67" "19625-02")

i=0
j=0
for e in ${sbn[@]}; do
    #echo "sbn[$i] = ${e}"
    let i++
    let j++
    aa=`date '+%s' | awk '{print strftime("%Y%m%d%H%M%S", $1)}'`
mysql -u $USER -p$PW $DB << EOS
insert into $TBL1 values ($j, '${e}', '${e}', 0, '11111', '$aa', '11111', '$aa');
EOS
done

mysql -u $USER -p$PW $DB << EOS
insert into $TBL2 values ('payouts', 1);
insert into $TBL2 values ("seibans", 1);
EOS

Peace!!

0 件のコメント:

コメントを投稿