Автор Тема: perl:Как конвертировать дату из текстового файла в MySql???  (Прочитано 4398 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн hoochie

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
есть некий текстовый файл, который содержит инфу типа

17/11/2004 05:38:08, текст1, xxx.xxx.xxx.xxx:xxxxx, текст2

и так построчно...
где ххх.ххх.ххх.ххх:ххххх - айпи адрес:порт

задача(желательно на перле):

1. сделать что бы заносились даты в таблицу MySQL (они просто как бы игнорируются или формат даты неверен)
2. чтобы в таблицу заносились только айпи адреса без портов

вот таким скриптом я это делаю

#!/usr/bin/perl
use DBI;

$dbh=DBI->connect("DBI:mysql:database=DB;host=$host",
"user","pwd") || die print "Can\'t connect";
print "connect sucsessfully!\\nFor tansfer press ENTER...";
<>;
$dbh->do("LOAD DATA local INFILE \'/home/test/123/test.txt\' REPLACE
INTO table test FIELDS TERMINATED BY \';\' OPTIONALLY
ENCLOSED BY \'\\"\' LINES TERMINATED BY \'\\n\'")||die print "\\nfailed";
print "transfer OK!";
<>;

подскажите в чем ошибка

поля таблицы следующие:

date timestamp (пробовал datetime - тож не помогает)
col1 varchar
ip varchar
col2 varchar

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Цитировать
hoochie:
есть некий текстовый файл, который содержит инфу типа

17/11/2004 05:38:08, текст1, xxx.xxx.xxx.xxx:xxxxx, текст2

Цитировать
hoochie:
FIELDS TERMINATED BY \';\'
The documentations is your friend

Оффлайн hoochie

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
прошу прощения, там FIELDS TERMINATED BY \', \'
но тем не менее, это не помогает...

именно поля содержащие дату просто не заносит в таблицу, остальное в порядке вроде....

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
hoochie
дебажить запрос не пробовал?
And no religion too...

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вот пример абсолютно рабочего запроса подобного типа(данные уже считанны из файла и занесены в массив):

my $insert 
"INSERT INTO  $table (time_stamp,elaps,client_ip,
    type_http,
    size,
    method,
    url,
    ident,
    host_name,
    mime,
    chanel) VALUES (?,?,?,?,?,?,?,?,?,?,?)"
;

foreach 
my $line_arr (@access_arr_in) {
	

	
my ($time_stamp,$elaps,$client_ip,$type_http,$size,$method,$url,$ident,$host_name,$mime,$chanel)=split(/[\\s\\t]+/,$line_arr);
	
$time_stamp=int $time_stamp;
	
chomp $chanel;
	
$sth->execute ($time_stamp,$elaps,$client_ip,$type_http,$size,$method,$url,$ident,$host_name,$mime,$chanel);

}

$sth->finish

гораздо проще, по моему разумению, считать в массив и от туда загонять данные в базу. Врят ли у вас гигабайтные фалы...
Потом проще отработать сие на простом массиве в одну две записи и вы сразу же увидите проблему, причем, желательно весь запрос проверить сначала в mysql.
Возможно у вас не совпадают тип столюца с вводимыми данными.
P.S.:
там где split должно быть так (неотображает):
my ($time_stamp,$elaps,$client_ip,$type_http,$size,$method,$url,$ident,$host_name,$mime,$chanel)=split(/[\\s\\t]+/,$line_arr);
Всё будет хорошо - я договорился!

Оффлайн hoochie

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Это как альтернатива, если я правильно понял....
но меня интересует почему LOAD DATA INFILE не справляется...

если я массивом считываю данные, то загоняются без проблем...

2commander как ты предлагаешь это сделать???

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Цитировать
hoochie:
как ты предлагаешь это сделать???

почитать perldoc DBI
в разделе METHODS COMMON TO ALL HANDLES
The documentations is your friend

Оффлайн hoochie

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
спасибо, будем разбираться...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28