Взять входные данные из текстового файла, а затем вставить и обновить таблицу базы данных с помощью скрипта оболочки.

Взять входные данные из текстового файла, а затем вставить и обновить таблицу базы данных с помощью скрипта оболочки.

У меня есть demo.txtфайл, содержащий ip. Этот текстовый файл обновляется ежедневно. Я создал таблицу, в которой хранится id, ip, date. Я хочу INSERTи UPDATEip из текстового файла в таблицу DATABASE с некоторыми условиями.

  1. Если в текстовом файле обнаружен дубликат IP-адреса, то ОБНОВИТЕ DATEстолбец, CURRENT_TIMESTAMPуказав эту конкретную запись.
  2. Если найден новый IP, то ВСТАВЬТЕ запись в ТАБЛИЦУ.

Файл demo.txt выглядит так:

1.1.1.1
2.2.2.2
3.3.3.3
1.1.1.1

Я пробовал эти:

 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

СКРИПТ 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;

Скрипт выше вставляет ip в таблицу, но не обновляет таблицу. Обновляется только если найдена новая запись.

mysql Ver 15.1 Distrib 10.3.22-MariaDB, для Linux (x86_64) с использованием readline 5.1

Связанный контент