连接mysql的方法,它只在bash脚本的for循环中执行一次?

问题描述:

我有一个脚本,将执行插入查询n次 - 因为我已经使用FOR循环,但问题是连接到远程mysql的命令也执行n次。这是我的问题更好的主意的脚本。连接mysql的方法,它只在bash脚本的for循环中执行一次?

#!/bin/bash -X 
#fields: id|alias|booking_time|contact_no|deleted|grace|number_in_queue|pax|seated_time|status|walk_in_time|queue_id|user_id 

echo "Bash version ${BASH_VERSION}..." 

for i in {1..5..1} 
do 
     _alias="Name$i" 
     _contact_no=$(cat /dev/urandom | tr -dc '1-9' | fold -w 10 | head -n 1) 
     _deleted="FALSE" 
     _number_in_queue=$i 
     _pax=$(($RANDOM % 10 + 20)) 
     _status="waiting" 
     _queue_id=424 
     _user_id=550 

     mysql -u root -p restbucks << EOF #Want this to execute only One time 
     INSERT INTO queue_item VALUES ('','$_alias',now(),'$_contact_no','$_deleted',NULL,'$_number_in_queue','$_pax',now(),'$_status',now(),'$_queue_id','$_user_id'); 

EOF 

done 

每次我尝试运行脚本,它都会问我密码。我想要的只有一次连接。

您可以在for循环之前移动mysql连接。

mysql -u root -p restbucks << EOF #this execute only One time 
for i in {1..5..1} 
do 
..... 
done 
EOF 

此外,建议您可以将查询写入文件,然后使用单个连接最终执行文件。

你可以参考bulk-mysql-query

+0

我试过,但那不是解决方案,它会给我错误! – 2015-01-21 07:59:25

+0

为什么不能在循环中将所有查询写入文件并尝试在一个连接中执行文件? – 2015-01-21 08:08:07

+0

我不知道该怎么做!我是新来的 !你能给我提供一些指导/链接/教程等。 – 2015-01-21 08:11:57

这是因为它被放置在for循环中。每次控制传递到循环时,它都会被执行。连接后无需连接到服务器。尝试在FOR语句前放置语句。