求助:shell+mysql的问题,大神进来瞧瞧
我的问题如下:我有一个循环,在shell中,循环体为:
之前脚本为:
mysql -h x.x.x.x -uxxx -pxxx test<<EOF
load data infile '/tmp/1.rep' replace into table history;
exit
EOF
mysql -h x.x.x.x -uxxx -pxxx test<<EOF
load data infile '/tmp/2.rep' replace into table history;
exit
EOF
mysql -h x.x.x.x -uxxx -pxxx test<<EOF
load data infile '/tmp/3.rep' replace into table history;
exit
EOF
现在我想改为弄个循环,将1.rep 2.rep 3.rep循环入test库的history表,如何实现?因为不确定有多少个rep文件要处理
谢谢 回复 1# bingdele
如果确定有几个文件的话,你试试这样,放在循环里:for i in 1.rep 2.rep 3.rep
do
mysql -h x.x.x.x -uxxx -pxxx test<<EOF
load data infile '/tmp/$i' replace into table history;
exit
EOF
done我习惯用 -e 参数带上执行语句:for i in 1.rep 2.rep 3.rep
do
mysql -h x.x.x.x -uxxx -pxxx test -e "load data infile 'tmp/$i' replace into table history;"
done如果不管几个文件,只在目录下搜索的话,可以试试这个:for i in `ls -1 /tmp/*.rep`
do
# 用 -e 参数:mysql -h x.x.x.x -uxxx -pxxx test -e "load data infile 'tmp/$i' replace into table history;"
mysql -h x.x.x.x -uxxx -pxxx test<<EOF
load data infile '/tmp/$i' replace into table history;
EOF
done @seesea2517
问一下,-e参数和他的<<EOF有什么区别呢 回复 3# lyhabc
效果是完全一样的啦,就是少打前后的 EOF :) @seesea2517
我们一般
cat >1.txt <<EOF
<EOF
做输入重定向的
但是,mysql居然也可以这样用。。。 回复 5# lyhabc
是啊,mysql 我也从来没有用 EOF 玩过 :emn23: 感谢你,经过测试OK,谢谢 回复 2# seesea2517
回复 7# bingdele
客气客气~ 回复 2# seesea2517
遇到带空格的文件名会出问题:mrgreen: 回复 9# Shell_HAT
{:qq21:} {:qq12:} 这个。。。呃。。。楼主应该不会遇到吧 {:qq23:}
页:
[1]