shell 批量导入数据

有个测试需要向mysql中批量导入大量数据, 首先想到的是source和loaddata,使用脚本配合,但是导入时因为数据比较大的缘故或是其他原因,导致source失败。

后来找到了一个简单方法,一句搞定。


已经知道要导入的文件,ll如下。如图所示多个库多个文件。

-rw-r--r-- 1 root root  13158906 4月  25 15:37 database.table_s2_tmp.sql
-rw-r--r-- 1 root root      2873 4月  25 15:37 database.table_s3.sql
-rw-r--r-- 1 root root 228317198 4月  25 15:38 database.table_s3_tmp_30.sql
-rw-r--r-- 1 root root  67877941 4月  25 15:38 database.table_s3_tmp_7.sql
-rw-r--r-- 1 root root 117999480 4月  25 15:38 database.table_s3_tmp.sql
-rw-r--r-- 1 root root 181120296 4月  25 15:38 database1.table_s4.sql
-rw-r--r-- 1 root root 181121016 4月  25 15:39 database1.table_s4_tmp.sql
-rw-r--r-- 1 root root      2869 4月  25 15:39 database1.table_sa.sql
-rw-r--r-- 1 root root 385396393 4月  25 15:40 database2.table_sa_tmp_30.sql
-rw-r--r-- 1 root root 119759525 4月  25 15:41 database2.table_sa_tmp_7.sql
-rw-r--r-- 1 root root 171142847 4月  25 15:40 database2.table_sa_tmp.sql
获取要导入的文件名,存入一个文件  ll |awk '{print $NF}'  >tb.txt.


shell脚本如下

#!/bin/bash
path=/home/mengniu/tb.txt  #导入文件列表
user=root
password=root
port=3306
host=127.0.0.1
cat $path |while read line
do
dbname=`echo $line|awk '{print $NF}' |awk -F. '{print $1}'` #获取dbname
echo $dbname  
echo $line   #导入的文件名
mysql -h$host -u$user -p$password -P$port -D$dbname < /home/root/xxx/$line
done





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值