1. shell 练习题
除了 mysql,performance_schema,information_schmema 以外的
每个数据库都增加一个表,名称是stock
字段名称如下:
日期,股票代码,名称,收盘价,最高价,最低价,开盘价,前收盘,涨跌额,涨跌幅,换手率,成交量,成交金额,总市值,流通市值
同时对日期进行创建索引
所有字段都是 varchar(255)
首先启动本机的 mariadb
systemctl enable mariadb && systemctl start mariadb
create index stock_riqi_idx on stock(`日期`)
参考案例
#!/bin/bash
#1 get all the database name
#2 render the databases ,use show tables the get tables
#3 end
for db in `echo "show databases;" | mysql -s `
do
echo "DB: $db "
mysql <<EOF | sed 's/^/Table: /g'
use $db;
show tables;
EOF
done
#
#日期,股票代码,名称,收盘价,最高价,最低价,开盘价,前收盘,涨跌额,涨跌幅,换手率,成交量,成交金额,总市值,流通市值
head -1 000001.csv |dos2unix | sed -e 's/,/` varchar(255), `/g' -e 's/^/create table stock(`/g' -e 's/$/` varchar(255) ) charset=utf8; /g'
下载股票文件
#!/bin/bash
url='http://pan.itshine.cn:5080/?explorer/share/fileOut&shareID=64h6PiQQ&path=%7BshareItemLink%3A64h6PiQQ%7D%2F%E5%A4%A7%E6%95%B0%E6%8D%AE%2F%E8%82%A1%E7%A5%A8%E6%95%B0%E6%8D%AE%2Fstock%2F'
# '000007.csv'
for n in {1..500}
do
newfn="`printf %06d $n `.csv"
down_file="$url$newfn"
echo "starting download $down_file"
df=`echo $down_file | sed -e "s/^/'/g" -e "s/$/'/g"`
echo $df | xargs curl >$newfn
done
#导入数据库
自动从5080网站下载100个文件的数据,注意,下载文件的大小大于10k的才算是正确的下载,下载参照上面的脚本
然后把这些股票文件的内容导入数据库里面,所有文件都导入。
这个是在mysql里执行导入数据的语法
load data local infile ‘/root/bin/000001.csv’ into table stock fields terminated by ‘,’ ignore 1 lines;
自动导入excel文件到数据库
下载gnumeric
这包里面包含了ssconvert命令,讲excels导出为csv文件
curl http://repo.iotti.biz/CentOS/7/noarch/lux-release-7-1.noarch.rpm >lux-release-7-1.noarch.rpm
rpm -ivh lux-release-7-1.noarch.rpm
yum -y install gnumeric
ssconvert -S my.xls a.csv 2>/dev/null
参考代码如下
#!/bin/bash
## ssconvert
# ssconvert -S my.xls my.csv
# my.csv.1 my.csv.2 my.csv.3
function ensure_gnumeric()
{
curl http://repo.iotti.biz/CentOS/7/noarch/lux-release-7-1.noarch.rpm >lux-release-7-1.noarch.rpm
rpm -ivh lux-release-7-1.noarch.rpm &>/dev/null
yum -y install gnumeric &>/dev/null
}
#
#
# my.xls.csv.1,my.xls.csv.2,my.xls.csv.3
function convert_excel()
{
xls=$1
mkdir -p csvs
rm -fr csvs/*
ssconvert -S $xls csvs/${xls}.csv
}
function run_sql()
{
sql=$1
mysql -e "$1"
}
# create_database filename
function create_database()
{
# my.xls.csv.xls
xls=$1
# table=`awk -F. '{print $1}' `
db=`cut -d'.' -f1`
run_sql "create database $db ; "
}
# create_tables my.csv.1
function create_tables()
{
csv=$1
num=$2
table=`echo $csv | awk -F. '{print $1}' `
table="T$num"$table
head -1 $csv |dos2unix | sed -e 's/,/` varchar(255), `/g' -e 's/^/create table $table(`/g' -e 's/$/` varchar(255) ) charset=utf8; /g' >$$
run_sql "`cat $$ `"
rm -f $$
}
# loaddata table, csv
function load_data()
{
table=$1
csv=$2
sql="load data local infile $2 into table $table fields terminated by ',' ignore 1 lines; "
run_sql "$sql"
}
excel=$1
ensure_gnumeric
convert_excel $excel
create_database $excel
sheet=1
for f in csvs/*
do
create_tables "$f" $sheet
table=`echo $f | awk -F. '{print $1}' `
table="T$num"$table
sheet=$((shell+1))
load_data $table $f
done
作者:严锋 创建时间:2023-12-09 13:05
最后编辑:严锋 更新时间:2025-05-09 15:48
最后编辑:严锋 更新时间:2025-05-09 15:48