Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как сделать копию таблицы? 
:(
    Опции темы
s_a_s_h_a
Дата 21.9.2004, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 261
Регистрация: 20.7.2004
Где: Петрозаводск

Репутация: нет
Всего: 1



Здравствуйте. Скажите, пожалуйста. Как из перла создать в БД2 таблицу test2 являющейся копией таблицы test1 из БД1?

PM MAIL   Вверх
GoodBoy
Дата 21.9.2004, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 4
Всего: 83



Вот это поможет тебе прочитать структуры таблиц, а дальше, думаю справишься... :-))))))

Код
#!/usr/bin/perl -w

use DBI;
use config;

print "Content-type: text/html\n\n";

$dbh = DBI->connect("DBI:mysql:database=$db->{base};host=localhost",
                       $db->{login}, $db->{pass}) || die "die connect";
@tables = $dbh->tables;
@tables = sort {$a cmp $b} (@tables);
%types = (
   '-6' => 'tinyint',
   '-1' => 'blob',
   '1'     => 'char',
   '4'     => 'int',
   '5'  => 'smallint',
   '3'     => 'number',
   '8'     => 'number',
   '9'     => 'date',
   '10' => 'time',
   '11' => 'timestamp',
   '12' => 'varchar'
);

foreach my $pr (@tables) {
   print "<br><b><a onclick=\"document.all['_$pr'].style.display=(''+document.all['_$pr'].style.display=='none')?'block':'none'\" style='cursor:hand'>",$pr,"</a></b>";
   $sth = $dbh->prepare("SELECT * FROM $pr") or print "&nbsp;&nbsp;&nbsp;&nbsp;".$dbh->errstr;
   $rvs = $sth->execute or die "execute: ".$sth->errstr."\n";
   print "<br>";
   $nf = $sth->{'NUM_OF_FIELDS'};
   print "<div id=_$pr style='display:block'><table border=1 cellpadding=2 cellspacing=0><tr><td>Имя поля</td><td>Tип поля</td><td>Размер</td><td>Зн. после зп.</td></tr>";
   for (my $i=0; $i<$nf; $i++) {
       print "<tr>";
       print "<td><b>",${$sth->{'NAME'}}[$i],"</b></td>";
       print "<td>",$types{${$sth->{'TYPE'}}[$i]},"</td>";
       print "<td>",${$sth->{'PRECISION'}}[$i],"</td>";
       print "<td>",((${$sth->{'SCALE'}}[$i])?${$sth->{'SCALE'}}[$i]:'&nbsp;'),"</td>";
       print "</tr>";
   }
   print "</table></div>";
}


Работает в ИЕ.


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
s_a_s_h_a
Дата 21.9.2004, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 261
Регистрация: 20.7.2004
Где: Петрозаводск

Репутация: нет
Всего: 1



Я вообще-то хотел немного другое узнать. Наверное, я плохо объяснил. Точно совсем не то написал.
Еще попытка...
Есть БД - BD1, в ней таблица TABLE1, есть БД - BD2, в ней таблица TABLE2, структура которой анологична
структуре TABLE1, теперь мне надо скопировать данные из TABLE1 into TABLE2. Вопрос: можно ли сделать
не так как здесь:

Код
my $dbh = DBI->connect("DBI:mysql:BD1",'user','password');
my @M1=();
my @M2=();

my $sth = $dbh->prepare("select * from TABLE1 where ....");
$sth->execute();
while( my ($p1,$p2,...)=$sth->fetchrow_array)
{ push(@M1,$p1);
  push(@M2,$p2);
  ............
}
$dbh->disconnect;

my $dbh = DBI->connect("DBI:mysql:BD2",'user','password');

for(my $i=0;$i<scalar(@M1);$i++)
{ $sth = $dbh->prepare(q{{insert into TABLE2 (...) values (?,?....)});
  $sth->execute($M1[$i],$M[$2],...);
  $sth->finish;
}


Можно ли это оптимизировать?
PM MAIL   Вверх
GoodBoy
Дата 21.9.2004, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 4
Всего: 83



Могу немного ошибиться с синтаксисом...

Код
my $dbh1 = DBI->connect("DBI:mysql:BD1",'user','password');
my $dbh2 = DBI->connect("DBI:mysql:BD2",'user','password');
my $sth1 = $dbh1->prepare("select * from TABLE1 where ....");
my $sth2 = $dbh2->prepare("insert into TABLE2 values (?,?....)");
$sth1->execute();
while (my @arr = $sth1->fetchrow_array) {
       $sth2->execute(join(",", @arr));
}
$sth1->finish;
$sth2->finish;
$dbh1->disconnect;
$dbh2->disconnect;


Но это при условии, что таблицы имеют АБСОЛЮТНО идентичную структуру!!!!! Вплоть до порядка следования полей!!!!!!

Это сообщение отредактировал(а) GoodBoy - 21.9.2004, 12:51


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
ElectricalStorm
Дата 21.9.2004, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: нет
Всего: 9



можно одним запросом ...

insert into TABLE2 values (select from TABLE1)


--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
GoodBoy
Дата 21.9.2004, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 4
Всего: 83



ElectricalStorm
Нельзя!!! Почитай внимательно вопрос!!! Там РАЗНЫЕ базы!


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
ElectricalStorm
Дата 21.9.2004, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: нет
Всего: 9



точно thumbs-up.gif


--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0484 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.