mysql導入導出csv的shell腳本小例子


導出:

#!/bin/bash
host="172.16.8.191"
port="3306"
user="root"
password="123456"
dbname="db_indicator_drawline"
dbset="--default-character-set=utf-8 -A"

#cmd="show databases"

#databases=$(mysql -h${host} -P${port} -u${user} -p${password} -e "${cmd}")
#for database in ${databases}
#do
   #echo ${database}
    cmd="show tables"
    tables=$(mysql -h${host} -P${port} -u${user} -p${password} ${dbname} -e "${cmd}")
    for table in ${tables}
    do
        if ((13 == ${#table}))
        then
            echo ${table}
            for fid in 10104
            do
                cmd="SELECT qxmode, 8 as fid,period,datetime,data FROM ${table} where fid = ${fid} and datetime <= 20180901000000"
                echo ${cmd}
                mysql -h${host} -P${port} -u${user} -p${password} ${dbname} -N -e "${cmd}" > ./tmp/${fid}/${fid}-${table}.csv
            done
        fi
    done
#done

  

導入:

#!/bin/bash
#Error encountered execution terminated
#set -e
#do something...
#set +e

host="172.16.8.191"
port="3306"
user="root"
password="123456"
dbname="test_db_indicator_drawline"
dbset="--default-character-set=utf-8 -A"

path=./tmp/
dirlist=$(ls -l ${path} | grep '^d' | awk -F' ' '{print $NF}')
for dir in ${dirlist}
do
    echo "dir:${path}${dir}" >> dir.log
    files=$(ls ${path}${dir})
    for file in ${files}
    do
        echo ${file}
        fid=${file%-*}
        tablecsv=${file#*-}
        table=${tablecsv%.*}
        echo ${fid} ${table}
        cmd="load data infile '${path}${dir}/${file}' replace into table ${table} (qxmode,fid,period,datetime,data)"
        echo ${cmd}
        mysql -h${host} -P${port} -u${user} -p${password} ${dbname} -e "${cmd}"
    done
done

  

set 命令

參見:http://www.ruanyifeng.com/blog/2017/11/bash-set.html

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM