Tome la entrada del archivo de texto y luego INSERTE y ACTUALIZA la tabla de la base de datos usando el script de shell

Tome la entrada del archivo de texto y luego INSERTE y ACTUALIZA la tabla de la base de datos usando el script de shell

Tengo un demo.txtarchivo que contiene ip. Este archivo de texto se actualiza diariamente. He creado una tabla que almacena id, ip, date. Quiero INSERTingresar UPDATEuna IP desde un archivo de texto a la tabla BASE DE DATOS con algunas condiciones.

  1. Si se encuentra una IP duplicada en el archivo de texto, ACTUALIZAR DATEla columna con CURRENT_TIMESTAMPese registro específico.
  2. 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

información relacionada