PDA

Показать полную графическую версию : Создание sql-скрипта для переноса txt в mysql


Страниц : 1 [2]

foxintel
07-04-2010, 23:21
Вот пример файла))) еще хотел уточнить, это лог файл прокси сервера handycache

kim-aa
17-04-2010, 22:55
1) вот забор данных из файлика
Кстати формат отличается слегка от описанного вами:
- разделение в исходном файле табуляцией
- есть неопознанный "хвост" - пихается в переменную $hz :)


#! d:\Perl\bin\perl.exe -w
#use strict;

# filename
my $full_file_name='d:\home\kim\perl\03.03.2010#18_59_51.txt';

# открытие десктора файла, если не найдено - аварийный выход с сообщением об ошибке
open HANDYCACHE, "< $full_file_name" or die "Cannot open file: $full_file_name. System state: $!";

# построчное чтение, до конца файла
while (<HANDYCACHE>) {

# чтение каждой строки происходит в переменную по умолчанию $_
my $some_input=$_;

#my $some_input='03.03.2010/19:09:27 fox/192.168.2.10 http://www.playground.ru/images/f2.gif 960 960/0 100% 0 "200 OK From Cache (HC)" Н.5';
# date,time,user,ip,url,size,re,cache,pr,send,otv,hz

chomp $some_input;

# отладочный вывод на экран считанной строки
#print "$some_input\n";
#print "begin---------------------------------------------------------\n";

#
#-----------------------------------------03.03.2010------------------------------------------------/19:03:21-----------------------------------------------tab-----------fox/192.168.2.10 ----------------------------------------------------------------------------tab---http://yandex.ru -------7020-------tab-------7020/493 ----------tab--------100% ---tab----999 -------tab--"200 OK From Cache (HC)"-------Н.5;
$some_input =~ m{^([0-9]{1,2}.[0-9]{1,2}.[0-9]{2,4})/([0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2})\b\s+\b(\w+)/([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\b\s+\b(\S+)\b\s+\b(\d+)\b\s+\b(\d+)/(\d+)\b\s+\b(\d+)%\s+\b(\d+)\b\s+(".*")\s+(.*)$};

my $date=$1;
my $time=$2;
my $user=$3;
my $ip=$4;
my $url=$5;
my $size=$6;
my $re=$7;
my $cache=$8;
my $pr=$9;
my $send=$10;
my $otv=$11;
my $hz=$12;

# отладочный вывод на экран разобранной строки
print " $date\n $time\n $user\n $ip\n $url\n $size\n $re\n $cache\n $pr\n $send\n $otv\n $hz\n";

# отладочная заглушка на выполнение одного прохода
#last;

# SQL вызовы







}

print "end---------------------------------------------------------\n";


close HANDYCACHE;


2) С SQL операторами пример приведен в приложенном файлике.
Проверить не могу, за отсутствием MySQL

kim-aa
17-04-2010, 22:58
RAR




© OSzone.net 2001-2012