Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak najwydajniej przerzucić tabelę między bazami?
nexis
post
Post #1





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Mam dwie bazy danych, działające na tym samym serwerze. Pierwsza baza ma następującą tabelę:
  1. CREATE TABLE `sklep_parametr` (
  2. `produkt` varchar(32) NOT NULL,
  3. `nazwa` varchar(255) NOT NULL,
  4. `opis` varchar(255) NOT NULL,
  5. `jm` varchar(16) NOT NULL
  6. ) ENGINE=MyISAM DEFAULT CHARSET=latin2;

którą chcę przerzucić do drugiej bazy danych o trochę odmiennej budowie tabeli:
  1. CREATE TABLE `parameter` (
  2. `product_code` varchar(255) collate utf8_polish_ci NOT NULL,
  3. `id` int(11) NOT NULL AUTO_INCREMENT,
  4. `key` varchar(255) collate utf8_polish_ci NOT NULL,
  5. `value` varchar(255) collate utf8_polish_ci NOT NULL,
  6. PRIMARY KEY (`id`),
  7. KEY `product_code` (`product_code`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

Relacje mają być następujące:
product_code = produkt
id = (auto increment)
key = nazwa
value = opis

Jak zrobić taką kopię najwydajniej z poziomu PHP? Warto dodać, że tabela posiada ponad 250.000 wpisów!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Cytat
Zapomniałem dodać, że każda baza ma innego użytkownika, więc ten sposób chyba odpada.

Nie ma to jak zapomniany *szczegolnie wazny* fragment specyfikacji...


A nie prosciej pobrac wszystkie rekordy i wstawic do drugiej tabeli? 2 polaczenia w php, jedna petelka i jazda?

Cytat
Jak w takim razie zmienić strukturę tabeli?

No jak to jak? ALTER TABLE...


--
edit:
no niby mozna wyeksportowac 1 tabele, wrzucic do bazki, i zmodyfikowac jej strukture - ale chcesz to robic za kazdym razem?
No i pozostaje problem autoincrement - nie wiem czy sam doda wartosci, po dodaniu nowej kolumny z AI.

Wydaje mi sie ze lepiej przygotowac docelowa tabele, i tylko przerzucac dane insertami.

Ten post edytował dr_bonzo 9.09.2009, 08:51:04
Go to the top of the page
+Quote Post
nexis
post
Post #3





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Cytat(dr_bonzo @ 9.09.2009, 09:46:20 ) *
A nie prosciej pobrac wszystkie rekordy i wstawic do drugiej tabeli? 2 polaczenia w php, jedna petelka i jazda?

Dla ponad 250.000 rekordów w 30 sekund (timeout)? Jaki kod PHP proponujesz (mysql, mysqli, PDO)?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 04:00