Tengo un demo.txt
archivo que contiene ip. Este archivo de texto se actualiza diariamente. He creado una tabla que almacena id, ip, date
. Quiero INSERT
ingresar UPDATE
una IP desde un archivo de texto a la tabla BASE DE DATOS con algunas condiciones.
- Si se encuentra una IP duplicada en el archivo de texto, ACTUALIZAR
DATE
la columna conCURRENT_TIMESTAMP
ese registro específico. - Si se encuentra una nueva IP, INSERTE el registro en la TABLA.
El archivo demo.txt se ve así:
1.1.1.1
2.2.2.2
3.3.3.3
1.1.1.1
He probado estos:
CREATE TABLE `demo` (
`id` int(25) NOT NULL AUTO_INCREMENT,
`ip` varchar(25) NOT NULL,
`date` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
GUIÓN DE BASH:
#!/bin/bash
inputfile="demo.txt"
cat $inputfile | while read ip ; do
echo "INSERT INTO demo (ip) VALUES ('$ip');"
done | mysql -u root -proot demo;
El script anterior inserta la ip en la tabla pero no la actualiza. Se actualiza solo si se encuentra un nuevo registro.
mysql Ver 15.1 Distrib 10.3.22-MariaDB, para Linux (x86_64) usando readline 5.1