Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Update kilku baz na raz
synec
post 5.04.2013, 11:26:17
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 2
Dołączył: 26.10.2009

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


Witam,

Mam takie pytanie mam kilkanaście tych samych baz. Teraz chciałbym dodać do nich wszystkich jedną tą samą tabele czy jest możliwość dodania tego jednym zapytaniem czy muszę w zapytaniu deklarować bazę i wykonać tyle zapytań ile jest baz?

Pozdrawiam.

Ten post edytował synec 5.04.2013, 11:28:00
Go to the top of the page
+Quote Post
sowiq
post 5.04.2013, 11:49:31
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Zakładając, że wszystkie bazy są na jednym serwerze i masz uprawnienia do nich wszystkich, to możesz zrobić to tak:

  1. CREATE TABLE nazwa_bazy_danych_1.nazwa_tabelki(
  2. [...]
  3. );
  4. CREATE TABLE nazwa_bazy_danych_2.nazwa_tabelki(
  5. [...]
  6. );
  7. CREATE TABLE nazwa_bazy_danych_3.nazwa_tabelki(
  8. [...]
  9. );


Ten post edytował sowiq 5.04.2013, 11:49:44
Go to the top of the page
+Quote Post
synec
post 5.04.2013, 12:03:36
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 2
Dołączył: 26.10.2009

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


Cytat(sowiq @ 5.04.2013, 11:49:31 ) *
Zakładając, że wszystkie bazy są na jednym serwerze i masz uprawnienia do nich wszystkich, to możesz zrobić to tak:

  1. CREATE TABLE nazwa_bazy_danych_1.nazwa_tabelki(
  2. [...]
  3. );
  4. CREATE TABLE nazwa_bazy_danych_2.nazwa_tabelki(
  5. [...]
  6. );
  7. CREATE TABLE nazwa_bazy_danych_3.nazwa_tabelki(
  8. [...]
  9. );


Nie no tak to wiem że mogę zrobić. Tylko, w sumie baz jest 150 smile.gif i myślałem, że mogę zrobić to jakoś szybciej. Ale już wiem że się nie da. Buduje już skrypt który mi zbuduje zapytania. Ale dzięki za odpowiedź.

Pozdrawiam.
Go to the top of the page
+Quote Post
sowiq
post 5.04.2013, 12:29:43
Post #4





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Spróbuj z kursorami. Zerknij tutaj: http://dev.mysql.com/doc/refman/5.0/en/cursors.html i tutaj: http://stackoverflow.com/questions/2379116...procedure-on-it

[edit]
Tak na szybko wyszło mi coś takiego:
  1. CREATE PROCEDURE make_tables()
  2. BEGIN
  3. DECLARE done INT DEFAULT FALSE;
  4. DECLARE a CHAR(128);
  5. DECLARE SQLStmt TEXT;
  6. DECLARE cur CURSOR FOR SELECT schema_name FROM information_schema.schemata WHERE schema_name != 'information_schema';
  7. DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  8.  
  9. OPEN cur;
  10.  
  11. read_loop: LOOP
  12. FETCH cur INTO a;
  13. IF done THEN
  14. LEAVE read_loop;
  15. END IF;
  16.  
  17. SET @SQLStmt = CONCAT('CREATE TABLE ', a, '.aa_test( a INT NOT NULL );');
  18. PREPARE Stmt FROM @SQLStmt;
  19. EXECUTE Stmt;
  20. DEALLOCATE PREPARE Stmt;
  21.  
  22. END LOOP;
  23.  
  24. CLOSE cur;
  25. END;


[edit 2]
Dodałem warunek do selecta w kursorze.

Ten post edytował sowiq 5.04.2013, 12:47:51
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 31.07.2025 - 05:07