标签归档:shell

shell脚本更新mysql某列数据

问题:现在有一个mysql的表 promotion ,该表有若干个字段(主键keyid),有两个字段sid和pid的值需要都更新为一个新的uid。这个新uid来自于外部的文本文件uid.txt中。

1. 先取出所有的主键keyid

2. 将主键keyid和新的uid对应起来,合并为一个文件(只是为了后面脚本读起来方便)

3. shell脚本访问mysql,更新列
#!/bin/sh

while read line
do
id=`echo $line | awk ‘{print $1}’`
uid=`echo $line | awk ‘{print $2}’`
mysql -h10.1.1.1 -uuser -ppassword -P3306 -e “use db01;update promotion set pid=${uid},sid=${uid} WHERE id=${id}”
done < nuid[/code] 如果出现mysql语法错误: “ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ',sid=111540261 WHERE id=12000083212' at line 1” 注意nuid文件中的分隔符问题,可能是特殊字符导致的。