一、目的
实现文本数据自动导入到Mysql数据库,实现快捷方便导入;
二、流程
(一)编写shell脚本
dbhost='192.168.200.103'
dbuser='root'
dbpasswd='root'
dbport='3306'
db='test'
#$1--目标表 $2--文本数据
#如果目标表存在删除目标表
sql1="drop table if exists $1"
mysql -h$dbhost -P$dbport -u$dbuser -p$dbpasswd $db -e "$sql1"
echo "删除成功"
#因为文本数据是以逗号作为分隔符,所以在最后拼接列名时会多一个逗号,采用获取最后一个列名来避免最后一列存在逗号;
col=`head -n +1 $2 | sed 's/,/ /g'`
# echo $col
lastname=''
for j in $col
do
lastname=$j
done
#采用拼接sql语句的方式创建表
sql2="create table if not exists $1("
for col_name in $col
do
if [ $col_name == $lastname ]
then
sql2="$sql2 $col_name varchar(200)"
else
sql2="$sql2 $col_name varchar(200),"
fi
done
sql2="$sql2)"
mysql -h$dbhost -P$dbport -u$dbuser -p$dbpasswd $db -e "$sql2"
echo "创建成功"
#导入数据到mysql
sql3="LOAD DATA INFILE '$2' INTO TABLE $1
CHARACTER SET utf8
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES"
mysql -h$dbhost -P$dbport -u$dbuser -p$dbpasswd $db -e "$sql3"
echo "导入成功"
#查询表数据
sql4="select * from $1"
mysql -h$dbhost -P$dbport -u$dbuser -p$dbpasswd $db -e "$sql4"
(二)复制文本数据到MySQL中的data
os.system("cp /root/moviedonghua.csv /usr/local/mysql/data/moviedonghua.csv")
os.system("/root/shell/mysqlcsv.sh /usr/local/mysql/data/moviedonghua.csv Movie")
#只有将文本数据先复制到MySQL中的data文件夹,才能实现导入到数据库;