如何用新记录替换数据库(mySql)中的记录?

如何用新记录替换数据库(mySql)中的记录?

我创建了一个 shell 脚本来连接到数据库并从 dhcpd.log 文件插入 IP 和 MAC:

#/!bin/bash
dhcpLogFile="/var/log/dhcpd.log"
NumberOfLines=$(awk '/DHCPACK/ { print $8} ' $dhcpLogFile | awk '!x[$0]++'|awk 'BEGIN{i=0}{i++;}END{print i}')
j=1
while [ $NumberOfLines -gt 0 ]
do
ip=$(awk '/DHCPACK/ { print $8} ' $dhcpLogFile | awk '!x[$0]++' |cut -f$j -d$'\n')
mac=$(awk '/DHCPACK/ { print $10} ' $dhcpLogFile | awk '!x[$0]++' |cut -f$j -d$'\n')   
let "j +=1"
let "NumberOfLines -=1"
mysql -u root --password='pw' MatchingDB <<- _END_ 
INSERT INTO IP_MACTable (IP_Address, MAC) VALUES ('$ip','$mac');
_END_
done

我的问题是如何修改上面的插入查询,使其在 ip 属性重复时替换现有记录,并在 ip 属性不重复时正常插入新记录?

我已经尝试过类似的方法,但它不断返回错误(语法错误):

INSERT INTO IP_MACTable (IP_Address, MAC) VALUES ('$ip','$mac') 
ON DUPLICATE KEY UPDATE MAC = VALUES('$mac')

根据我的服务器的错误是near '$mac')

错误代码是#1064

答案1

您可以将插入修改为类似的内容,

INSERT INTO IP_MACTable (IP_Address, MAC) VALUES ('$ip','$mac') 
ON DUPLICATE KEY UPDATE MAC = VALUES('$mac')

相关内容