Efendy
|
|
« Ответ #15 : 20 Августа 2009, 22:26:00 » |
|
автоматом перенесутся те поля, которые были стандартизированы - это поля адреса (улица, дом, квартира...), а также телефон. Формат дополнительных данных в их старом понятии, имеется ввиду специальное поле, которое разделителем разделялось на несколько, не фиксирован. Обычно он состоял из полей "входящая скорость", "исходящая" и др. Однако, формат этого поля не являлся обязательным, поэтому в других сетях разные данные были забиты в них. Переносить эти данные можно только зная их формат. Поскольку, как уже сказал, от сети к сети там разные данные - автоматом перенести нельзя. Понадобится персональная модификация инсталятора. Пока так
|
|
|
Записан
|
|
|
|
Elisium
NoDeny
Старожил
Карма: 19
Offline
Сообщений: 360
На форумах "спасибом" называется плюс к карме.
|
|
« Ответ #16 : 22 Августа 2009, 00:17:59 » |
|
мдя .. понял ... вобщем, вижу, грозит мне более глубокое, чем хотелось, изучение Перла ))
|
|
|
Записан
|
|
|
|
bondar
NoDeny
Пользователь
Карма: -1
Offline
Сообщений: 15
|
|
« Ответ #17 : 27 Августа 2009, 17:07:20 » |
|
мдя .. понял ... вобщем, вижу, грозит мне более глубокое, чем хотелось, изучение Перла ))
могу поделится похожим скриптом, писали для переноса дополнительных полей из 45й версии, в 50.19. версии отличаются, но форматы полей одинаковые, тот же разделитель.
|
|
|
Записан
|
|
|
|
Elisium
NoDeny
Старожил
Карма: 19
Offline
Сообщений: 360
На форумах "спасибом" называется плюс к карме.
|
|
« Ответ #18 : 27 Августа 2009, 17:47:40 » |
|
чето типа такого ? От оригинального отличается исправлеными ошибками, дописано пару строк ... Предполагается что таблица 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"; } }
|
|
« Последнее редактирование: 27 Августа 2009, 17:53:21 от Elisium »
|
Записан
|
|
|
|
bondar
NoDeny
Пользователь
Карма: -1
Offline
Сообщений: 15
|
|
« Ответ #19 : 27 Августа 2009, 22:30:05 » |
|
чето типа такого ? От оригинального отличается исправлеными ошибками, дописано пару строк ... Предполагается что таблица 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"; } } ооо...он самый да его можно использовать, при переходе он сработал на все 100%.
|
|
|
Записан
|
|
|
|
|