чето типа такого ?
От оригинального отличается исправлеными ошибками, дописано пару строк ...
Предполагается что таблица doplavues пуста ... или номер ревизии нужно поставить такой же, как у других данных ..
#!/usr/bin/perl
#
# Скрипт для конвертации дополнительного поля с MAC-адресом из версии 49q в 50ю версию
#
# Настройки скрипта:
# $id_dop - ID поля с mac-адресом, в таблице dopfields
# $admin_id - ID админа
# $time - можно указать конкретно время в unix timestamp
# $revision - номер ревизии, желательно сделать его выше всех ревизий которые есть в таблице dopvalues
# По поводу количества дополнительных полей: в строке номер 45 можно это указать, например,
# если у Вас 5 дополнительных полей и одно из них с MAC-адресов, строка будет выглядеть так:
# (undef,undef,$ipmac,undef,undef)=split(/\|/,$dop);
# в этом варианте поле с мак-адресов у Вас третье по счету.
#
# email автора: wobondar@gmail.com
#
# (?:[0-9,aA-fF][0-9,aA-fF]\:){5}[0-9,aA-fF][0-9,aA-fF]
# 20000|20000|00:50:8d:95:b0:dd||
# ||00:1A:4D:73:6E:BF||
# Настройки скрипта
$id_dop=4;
$admin_id = 6;
$add_time = time;
$revision = 6;
# Настройка доступа к базе данных
$dbname='bill'; # Имя БД
$dbuser='bill_kernel'; # Логин БД
$dbpass='MY_hArd_pAssSWorD'; # Пароль БД
use DBI;
$DSN="DBI:mysql:database=$dbname;host=localhost;";
$dbh = DBI->connect($DSN,$dbuser,$dbpass);
unless ($dbh) {
print ("Error Database");
}
$sth=$dbh->prepare("SELECT `id`, `dop_param` FROM `users`;");
$sth->execute();
while ($p=$sth->fetchrow_hashref){
$dop=$p->{'dop_param'};
$id_user=$p->{'id'};
(undef,undef,$ipmac,undef,undef)=split(/\|/,$dop);
$ipmac=~ s/\#//s;
$ipmac=~ s/-/:/g;
if($ipmac){
$dbh->do("INSERT INTO `dopvalues` (`line_id`, `parent_id`, `dopfield_id`, `field_value`, `admin_id`, `time`, `revision`) VALUES (0, '$id_user', '$id_dop', '$ipmac', '$admin_id', '$add_time', '$revision');");
print "id = $id_user\t$mac - OK!\n";
}
}