0xbad0c0d3
гуру nodeny )
NoDeny
Спец
Карма: 116
Offline
Сообщений: 1059
|
|
« Ответ #105 : 06 Марта 2014, 22:24:53 » |
|
INSERT INTO mac_uid (uid,mac) (SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac')
|
|
|
Записан
|
|
|
|
Pa4ka
|
|
« Ответ #106 : 07 Марта 2014, 08:05:33 » |
|
INSERT INTO mac_uid (uid,mac) (SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac') спасибо, но не помогло(
|
|
|
Записан
|
|
|
|
vddav
|
|
« Ответ #107 : 07 Марта 2014, 12:21:55 » |
|
я переносил таким вот перловым скриптом))) коряво конечно, но перенесло, до сих пор все работает) но лучше проверь где нить в песочнице. была доп БД 'test' в ней база старого нодени. работает через цикл - поочередно перебирает все id юзеров, по єтому в цикле ставишь кол-во абонов + 1))) и dopfield_id смотри какое у тебя по номеру. #!/usr/bin/perl
use DBI;
my $dsn = 'DBI:mysql:nodeny:localhost'; my $db_user_name = 'root'; my $db_password = 'рутовій пас'; my ($uid, $mac, $mac_ok, $x); my $dbh = DBI->connect($dsn, $db_user_name, $db_password);
$x=0; $dbh->do("TRUNCATE TABLE nodeny.mac_uid");
while($x<количество абонов) {
my $sth = $dbh->prepare(qq{ SELECT parent_id, field_value from test.dopvalues WHERE parent_id=$x AND dopfield_id=4 AND revision=( SELECT MAX(revision) FROM test.dopvalues WHERE parent_id=$x AND dopfield_id=4); }); $sth->execute(); ($uid, $mac) = $sth->fetchrow_array(); $sth->finish(); $mac_ok = join '', split /:/, lc $mac;
$dbh->do("INSERT INTO nodeny.mac_uid (uid, mac) values ('$uid', '$mac_ok')"); print "$x, $mac, $mac_ok\n"; $x++; } $dbh->disconnect();
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #108 : 07 Марта 2014, 12:32:13 » |
|
INSERT INTO mac_uid (uid,mac) (SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac') спасибо, но не помогло( алиас у поля с маками _mac?
|
|
|
Записан
|
|
|
|
Pa4ka
|
|
« Ответ #109 : 07 Марта 2014, 12:38:35 » |
|
я переносил таким вот перловым скриптом))) коряво конечно, но перенесло, до сих пор все работает) но лучше проверь где нить в песочнице. была доп БД 'test' в ней база старого нодени. работает через цикл - поочередно перебирает все id юзеров, по єтому в цикле ставишь кол-во абонов + 1))) и dopfield_id смотри какое у тебя по номеру. #!/usr/bin/perl
use DBI;
my $dsn = 'DBI:mysql:nodeny:localhost'; my $db_user_name = 'root'; my $db_password = 'рутовій пас'; my ($uid, $mac, $mac_ok, $x); my $dbh = DBI->connect($dsn, $db_user_name, $db_password);
$x=0; $dbh->do("TRUNCATE TABLE nodeny.mac_uid");
while($x<количество абонов) {
my $sth = $dbh->prepare(qq{ SELECT parent_id, field_value from test.dopvalues WHERE parent_id=$x AND dopfield_id=4 AND revision=( SELECT MAX(revision) FROM test.dopvalues WHERE parent_id=$x AND dopfield_id=4); }); $sth->execute(); ($uid, $mac) = $sth->fetchrow_array(); $sth->finish(); $mac_ok = join '', split /:/, lc $mac;
$dbh->do("INSERT INTO nodeny.mac_uid (uid, mac) values ('$uid', '$mac_ok')"); print "$x, $mac, $mac_ok\n"; $x++; } $dbh->disconnect();
Буду пробовать! У меня это не рабочий а тестовый. Значит создаю базу test, выбираю туда бэкап 50,32, пароли и настройки в скрипте меняю под свои. И по скрипту в базу nodeny (основную) перенесутся mac-адреса в соответсвии с ID абонентов. Правильно понял?
|
|
|
Записан
|
|
|
|
Pa4ka
|
|
« Ответ #110 : 07 Марта 2014, 12:43:46 » |
|
INSERT INTO mac_uid (uid,mac) (SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac') спасибо, но не помогло( алиас у поля с маками _mac? Да. скрин с phpmyadmin prntscr.com/2ymx9f
|
|
|
Записан
|
|
|
|
vddav
|
|
« Ответ #111 : 07 Марта 2014, 12:57:12 » |
|
я переносил таким вот перловым скриптом))) коряво конечно, но перенесло, до сих пор все работает) но лучше проверь где нить в песочнице. была доп БД 'test' в ней база старого нодени. работает через цикл - поочередно перебирает все id юзеров, по єтому в цикле ставишь кол-во абонов + 1))) и dopfield_id смотри какое у тебя по номеру. #!/usr/bin/perl
use DBI;
my $dsn = 'DBI:mysql:nodeny:localhost'; my $db_user_name = 'root'; my $db_password = 'рутовій пас'; my ($uid, $mac, $mac_ok, $x); my $dbh = DBI->connect($dsn, $db_user_name, $db_password);
$x=0; $dbh->do("TRUNCATE TABLE nodeny.mac_uid");
while($x<количество абонов) {
my $sth = $dbh->prepare(qq{ SELECT parent_id, field_value from test.dopvalues WHERE parent_id=$x AND dopfield_id=4 AND revision=( SELECT MAX(revision) FROM test.dopvalues WHERE parent_id=$x AND dopfield_id=4); }); $sth->execute(); ($uid, $mac) = $sth->fetchrow_array(); $sth->finish(); $mac_ok = join '', split /:/, lc $mac;
$dbh->do("INSERT INTO nodeny.mac_uid (uid, mac) values ('$uid', '$mac_ok')"); print "$x, $mac, $mac_ok\n"; $x++; } $dbh->disconnect();
Буду пробовать! У меня это не рабочий а тестовый. Значит создаю базу test, выбираю туда бэкап 50,32, пароли и настройки в скрипте меняю под свои. И по скрипту в базу nodeny (основную) перенесутся mac-адреса в соответсвии с ID абонентов. Правильно понял? ну вроде все так))) собственно почему перловім скриптом - в 50н маки хранились с двоеточиями, а в Н+ без разделителей, собственно и пришлось такое "чудо" придумать))))
|
|
|
Записан
|
|
|
|
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
Карма: 116
Offline
Сообщений: 1059
|
|
« Ответ #112 : 07 Марта 2014, 13:27:27 » |
|
SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac' хоть что-то выдаст? если нет, то это: SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac' если да, то заменить в инсерте первый селект на второй
|
|
|
Записан
|
|
|
|
Pa4ka
|
|
« Ответ #113 : 07 Марта 2014, 13:54:33 » |
|
SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac' хоть что-то выдаст? если нет, то это: SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac' если да, то заменить в инсерте первый селект на второй #mysql -p mysql>use nodeny; mysql>SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac' После етого должно было что то выдать, если я правильно понял? но ничего не выдает ни так ни так(
|
|
|
Записан
|
|
|
|
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
Карма: 116
Offline
Сообщений: 1059
|
|
« Ответ #114 : 07 Марта 2014, 14:04:32 » |
|
а Вы уверены, что в базе хоть что-то есть? Например: SELECT * FROM dopvalues LIMIT 10 SELECT * FROM dopdata LIMIT 10 даст какой-то результат?
|
|
|
Записан
|
|
|
|
Pa4ka
|
|
« Ответ #115 : 07 Марта 2014, 14:24:14 » |
|
mysql> SELECT * FROM `dopvalues` WHERE `dopfield_id` =4 LIMIT 0 , 30; +-----------+-------------+-------------------+ | parent_id | dopfield_id | field_value | +-----------+-------------+-------------------+ | 1 | 4 | 001D6074A102 | | 1 | 4 | | | 1 | 4 | 001D6074A102 | | 1 | 4 | 001D6074A103 | | 1 | 4 | 00:1D:60:74:A1:02 | | 1 | 4 | 00:1D:60:74:00:00 | | 1 | 4 | 00:1D:60:04:00:00 | | 1 | 4 | 00:1D:60:74:00:00 | | 1 | 4 | 00:1D:60:74:A1:02 |
|
|
|
Записан
|
|
|
|
Pa4ka
|
|
« Ответ #116 : 07 Марта 2014, 14:26:42 » |
|
mysql> SELECT * FROM `dopvalues` WHERE `dopfield_id` =4 LIMIT 0 , 30; +-----------+-------------+-------------------+ | parent_id | dopfield_id | field_value | +-----------+-------------+-------------------+ | 1 | 4 | 001D6074A102 | | 1 | 4 | | | 1 | 4 | 001D6074A102 | | 1 | 4 | 001D6074A103 | | 1 | 4 | 00:1D:60:74:A1:02 | | 1 | 4 | 00:1D:60:74:00:00 | | 1 | 4 | 00:1D:60:04:00:00 | | 1 | 4 | 00:1D:60:74:00:00 | | 1 | 4 | 00:1D:60:74:A1:02 |
Я дико извиняюсь, не ставил вконце ";" все команды что Вы указывали выводят таблицу маков
|
|
|
Записан
|
|
|
|
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
Карма: 116
Offline
Сообщений: 1059
|
|
« Ответ #117 : 07 Марта 2014, 14:31:21 » |
|
SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac'; в их числе? должно либо вывести результат, либо сообщить про ошибку, но если ни результата, ни ошибки, тогда нужно смотреть в: select * from rev_users limit 10; должно быть что-то должно показать доп.поля
|
|
|
Записан
|
|
|
|
Pa4ka
|
|
« Ответ #118 : 07 Марта 2014, 14:34:58 » |
|
SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac'; в их числе? должно либо вывести результат, либо сообщить про ошибку, но если ни результата, ни ошибки, тогда нужно смотреть в: select * from rev_users limit 10; должно быть что-то должно показать доп.поля Да, в их числе. Выводиться таблица ID mac
|
|
|
Записан
|
|
|
|
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
Карма: 116
Offline
Сообщений: 1059
|
|
« Ответ #119 : 07 Марта 2014, 14:39:56 » |
|
Тогда, предположу, что: INSERT INTO mac_uid (uid,mac) SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac'; выполнится отлично
|
|
|
Записан
|
|
|
|
|