Биллинговая система Nodeny

Главная категория => Nodeny Plus => Тема начата: artful от 22 Апреля 2015, 15:41:03



Название: Перенос данных допполя с Н49 -> Н+
Отправлено: artful от 22 Апреля 2015, 15:41:03
Всем привет! Задавал тот же вопрос в теме "Миграция с 50.32", возможно та тема састарела. Подскажите пожалуйста следующее: в 49-м у меня было дополнительное поле "Комментарий", при переходе на Н+ оно не перенеслось. Вот создал я такое же дополнительное поле в Н+, а можете, если это возможно подсказать как сделать, чтобы данные из старой базы этого поля перенести в новую. Может скрипт таковой имеется. А то придется порядочно информации руками перепечатывать.


Название: Re: Перенос данных допполя с Н49 -> Н+
Отправлено: artful от 22 Апреля 2015, 16:21:58
Вопрос решил самостоятельно :)


Название: Re: Перенос данных допполя с Н49 -> Н+
Отправлено: cojiict от 22 Апреля 2015, 16:25:16
коментар до чого? до абонентських записів?
Код:
ALTER TABLE `users` CHANGE `comment` `comment` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

А взагалі найкраще так
 
Код:
mysql -p
use bill;
source /.../from_50.32_to...txt;
все переноситься без проблем


Название: Re: Перенос данных допполя с Н49 -> Н+
Отправлено: artful от 22 Апреля 2015, 20:41:12
Це типу було допполе як наприклад Вулиця, Будинок, Квартира, Телефон і вони за допомогою наступного перенеслись:

Код:
mysql -p
use bill;
source /.../from_50.32_to...txt;

А ось воно ні.
Я вирішив проблему за допомогою скрипта, котрого знайшов на форумі і трохи під себе переробив, перед цим заливши паралельно дамп зі старої бази в bill49 і з адмінки створив Дополнительное поле _adr_comment:

Код:
#!/usr/bin/perl
use DBI;
my $dsn = 'DBI:mysql:bill:localhost';
my $db_user_name = 'root';
my $db_password = 'synthntktrjv';
my ($uid, $mac_ok, $x);
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);
$x=0;
while($x<574) {
my $sth = $dbh->prepare(qq{
SELECT parent_id, field_value from bill49.dopvalues
        WHERE  parent_id=$x AND dopfield_id=10 AND revision=(
                SELECT MAX(revision)
                FROM bill49.dopvalues
                WHERE parent_id=$x AND dopfield_id=10);
              });
$sth->execute();
($uid, $coment) = $sth->fetchrow_array();
$sth->finish();
$dbh->do("UPDATE bill.data0 SET _adr_comment='$coment' WHERE uid=$x");
print "$x, $coment\n";
$x++;
}
$dbh->disconnect();

І все залилось туди куди потрібно :)