テキストファイルから入力を取得し、シェルスクリプトを使用してデータベーステーブルを挿入および更新します。

テキストファイルから入力を取得し、シェルスクリプトを使用してデータベーステーブルを挿入および更新します。

IP を含むファイルがありますdemo.txt。このテキスト ファイルは毎日更新されます。IP を格納するテーブルを作成しました。いくつかの条件に従って、テキスト ファイルから IP を DATABASE テーブルにインポートしたいとid, ip, date考えています。INSERTUPDATE

  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 使用

関連情報