我希望能夠快速做到這樣:是否sed/awk爲此工作?改用別的東西?
我有一個MySQL數據庫表訪問我的網站。這些列是日期,IP地址,瀏覽器,URL,引用者。
我想這樣做:在某一天
- 抓住所有的行刪除所有的行,並確保在每個15分鐘的間隔,沒有兩行具有相同的IP地址
對於這些類型的問題SED/AWK適合呢?或者一些腳本語言比如Ruby更合適?
我不太「得到」什麼SED/AWK實際上是。隨意簡要解釋一下。謝謝!
我希望能夠快速做到這樣:是否sed/awk爲此工作?改用別的東西?
我有一個MySQL數據庫表訪問我的網站。這些列是日期,IP地址,瀏覽器,URL,引用者。
我想這樣做:在某一天
對於這些類型的問題SED/AWK適合呢?或者一些腳本語言比如Ruby更合適?
我不太「得到」什麼SED/AWK實際上是。隨意簡要解釋一下。謝謝!
桑達和Awk意爲文字處理工具。因此,他們可以在數據以良好的文本格式(通常相當於人類可讀)呈現的情況下提供幫助。
SQL數據庫通常以二進制格式存儲,對於這些數據庫,這些工具是而不是的最佳選擇。即使是一些格式是人類可讀,與其他工具(XML可能是最好的例子)更好。
如果您可以將數據庫導出爲CSV(逗號分隔值電子表格),則可能有更好的機會使用這些工具處理它。
否則,使用Perl/Python/Ruby和適當的SQL模塊訪問數據會更容易。
希望這有助於=)
我建議使用SQL實現此目的。爲什麼你存儲在數據庫中的數據擺在首位那是不是?
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)
注:此不做行檢查beforing刪除,但你如何開始開發一些想法。