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

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

demo.txtipを含むファイルがあります。このテキストファイルは毎日更新されます。id, ip, date特定の条件下で、テキストファイルのIPをデータベーステーブルにINSERT保存したいと思います。UPDATE

  1. DATEテキストファイルで重複したIPが見つかると、その特定のレコードの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

クンクンスクリプト:

#!/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 バージョン 15.1 Linux 用 Distrib 10.3.22-MariaDB(x86_64), readline 5.1 の使用

関連情報