我和我的同事想通过access.log从squid服务器获取数据到另一台Debian服务器上的mysql服务器。
我们在互联网上找到了此类内容的指南,并制作了一个脚本,将 access.log 文件中的字符串中的数据放入 mysql 中。但这似乎不起作用,可能与插入物有关,这里不知道。请帮助我们找出需要解决的问题。
这是一个脚本:
#!/bin/bash
cp /www/logs/squid/access.log /tmp/squidforparse.log
>/www/logs/squid/access.log
awk '{print "INSERT INTO squid (ip,bytes,link,trans,time) \
VALUES(\""$3"\","$5",\""$7"\",\""$9"\",from_unixtime("$1"));"};' \
< /tmp/squidforparse.log | mysql -D traffics -u root --password=my_sql_passwd
rm -f /tmp/squidforparse.log
我对 sql 并不是那么擅长,尽管我确实了解基础级别的大多数运算符和函数,但我仍然无法弄清楚是什么让它无法工作。
最佳答案
如果您的日志文件如下所示,
"apple","red",1230,"Newton","Physics","Da vinci code"
"iphone","black",44500,"Jobs","Mobiles","telephone booth"
"shoe","brown",9900,"Elizabeth","Fashion","shoe shop"
我的表结构如下所示,
table_name = t1
columns = topic, price, department
然后我会像下面这样,
mysql -D traffics -u root --password=my_sql_passwd
LOAD DATA LOCAL INFILE 'file.log' INTO TABLE t1
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
(@col1,@col2,@col3,@col4,@col5,@col6) set topic=@col1,price=@col3,department=@col5;
注意:
- 假设日志文件以逗号分隔,如果其管道分隔,则使用 以“|”结尾的字段。
- 此外,请注意如何使用 @col1、@col2、.. 来存储以下值 日志文件。
关于mysql - 将日志文件中的数据字符串插入mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18472446/