0

私はこのようなことをすぐにできるようにしたい:

サイトへの訪問者を含む MySQL データベース テーブルがあります。列は、日付、IP アドレス、ブラウザ、URL、リファラーです。

私はこれをしたい:

  1. 特定の日のすべての行を取得する
  2. すべての行を削除し、15 分ごとに 2 つの行が同じ IP アドレスを持たないようにします。

sed/awk はこの種の問題に適していますか? それとも、Ruby などのスクリプト言語の方が適切でしょうか?

sed/awk が実際に何のためにあるのか、よく「わかりません」。それについても簡単に説明してください。ありがとうございました!

4

3 に答える 3

2

この目的のためにSQLを使用することをお勧めします。そもそもデータベースにデータを保存したのはそのためですね。

于 2012-10-04T18:14:13.250 に答える
2

Sed と Awk は、テキスト処理ツールを意味します。したがって、データが適切なテキスト形式 (通常は人間が読めるものと同等) で表示される場合に役立ちます。

通常、SQL データベースはバイナリ形式で保存されるため、これらのツールは最適なオプションではありません。人間が読める形式であっても、他のツールを使用したほうがよい場合があります (XML はおそらく最良の例です)。

データベースを CSV (カンマ区切り値スプレッドシート) としてエクスポートできれば、これらのツールで処理できる可能性が高くなります。

それ以外の場合は、Perl/Python/Ruby と適切な SQL モジュールを使用してデータにアクセスする方が簡単です。

これが役立つことを願っています=)

于 2012-10-04T18:18:30.027 に答える
0

SedまたはAwkは、テキスト処理用であるため、この問題には適していません。Pythonいずれかを使用するかPHP、関連するSQLライブラリ/モジュールと組み合わせて使用​​し、 cronを使用してスクリプトの実行をスケジュールすることをお勧めします。スクリプトはこれに沿ったものになります(php の場合)。

$db_host = 'localhost';
$db_user = 'mysql_user'
$db_pwd = 'supersecret'

$Date = '10/3/2010' #Whatever the date format is in the DB 
mysqlconnect($db_host, $db_user, $db_pwd);

$result = mysql_query("SELECT * FROM db.table WHERE time=$Date);

while (!$row = mysql_fetch_row($result))
    echo $row

# Should check IP before deletion - **WARNING** Will delete all data from table
mysql_query("DELETE FROM db.table")

mysql_free_result($result)

注: これは削除前の行チェックを行いませんが、開発を開始する方法については理解できます。

于 2012-10-04T18:32:18.530 に答える