gpt4 book ai didi

python - 解析访问日志数据以适合数据库格式

转载 作者:行者123 更新时间:2023-11-30 01:03:27 24 4
gpt4 key购买 nike

我有一个 Web 访问 CSV 文件,其中包含一些如下所示的统计信息(通常大约有 20K 条记录,但这是一个只有 6 条记录的示例):

servlet name, HTTP RC, response time, request timestamp
/servlet_A,200,3,[10/Nov/2013:11:00:12 +0000]
/servlet_B,302,10,[10/Nov/2013:11:00:12 +0000]
/servlet_C,200,17,[10/Nov/2013:11:00:12 +0000]
/servlet_A,200,30,[10/Nov/2013:11:00:15 +0000]
/servlet_B,302,16,[10/Nov/2013:11:00:15 +0000]
/servlet_C,200,11,[10/Nov/2013:11:00:15 +0000]

我需要将其解析为以下格式:

servlet name, requests count with latency in range 0-5, latency range 6-10, latency range 11-15, ...., latency range 196-200, HTTP 200 count, HTTP 302 count
servlet_A,1,0,0,0,0,1,0,....,2,0
servlet_B,0,1,0,1,0,0,0,....,0,2
servlet_C,0,0,1,1,0,0,0,....,2,0

这些文件位于基于 CentOS 的服务器上,带有 Perl、Python、Bash 等工具。输出文件将用于加载到我无权访问的第 3 方 MySQL 数据库中。

我尝试在 bash 中编写此内容,但我的数学有点偏差,我尝试使用除以 5 来放置延迟计数,例如延迟 = 11 且 11/5 = 2.2 并向上舍入。这意味着应该将增量 1 添加到第三个位置,但我在正确解析它时遇到了问题。

也许还有其他选项可以执行此操作(使用本地构建的数据库并导出文件)或我现在知道的其他一些选项,因此非常感谢任何帮助!

最佳答案

对于一次性数据转换来说,这是快速且丑陋的,并且不遵循任何良好编码实践的约定:-)。假设您的数据位于 data.txt 中。不输出任何 header 。

#! /usr/bin/perl

# Sub-program to calculate latency counts for number range
# params: key, latency lower limit, latency upper limit
sub latencyCounts {
$latency_total = 0;
for ($i = $_[1]; $i <= $_[2]; $i++) {
$latency_total += $latency_counts{$_[0]}[$i];
}
return $latency_total;
}

# parse file and add data to arrays
open (FOO, "< data.txt");
while (<FOO>) {
chomp;
if (/^\/(.+),(\d{3}),(\d+),\[.+\]$/) {
$httpcode_counts{$1}[$2]++;
$latency_counts{$1}[$3]++;
}
}
close (FOO);

# calculate and output totals
foreach (sort keys %httpcode_counts) {
$key = $_;
printf ("%s,%d,%d,%d,%d,...,%d,%d\n",
$key,
latencyCounts($key, 0, 5),
latencyCounts($key, 6, 10),
latencyCounts($key, 11, 195),
latencyCounts($key, 196, 200),
$httpcode_counts{$key}[200],
$httpcode_counts{$key}[302]);
}

exit;

有人可能会用不到一半的代码得出相同的结果......?

关于python - 解析访问日志数据以适合数据库格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19889380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com