循环遍历文本文件的SQL更新

时间:2014-04-01 10:17:46

标签: sql oracle bash

我正在做的那一刻:

cat routes.csv | while read a b; do

echo "... changing route on account $a to $b"

sqlplus -s $user/$pass@$db <<EOF
UPDATE customers SET delivery_route = '$b' WHERE customer_no = '$a';
commit;
quit;
EOF

echo "... done"
echo " "

done

这会为它处理的每一行创建一个新的SQL连接,并且我有500多个需要更新的帐户。

打开新的SQL连接,运行所有更新并关闭是否会更快?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:0)

cat routes.csv | while read a b; do
echo "UPDATE customers SET delivery_route = '$b' WHERE customer_no = '$a';"
done | sqlplus -s $user/$pass@$db

将使用单个mysql客户端进程,单个连接和单个事务,因此它将比为每个条目分配不同的进程更快