Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

MySQL i dinamicko kreiranje tabela.

[es] :: MySQL :: MySQL i dinamicko kreiranje tabela.

Strane: 1 2

[ Pregleda: 4259 | Odgovora: 35 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

*Winy*
NS

Član broj: 17202
Poruke: 119
*.adsl.eunet.rs.



+3 Profil

icon MySQL i dinamicko kreiranje tabela.29.08.2011. u 15:53 - pre 154 meseci
Molim Vas za pomoc. Problematika je sledeca:

Imam jednu tabelu koje sadrzi xml definicije drugih tabela. Postoji software koji pomocu te tabele kreira druge tabele u koje se unose podatci nekih merenja.
Medjutim u jednoj tabeli jedan red sadrzi podatke npr 3 sata(npr pritisak01 temperatura01 pritisak02 temperatura02 pritisak03 temperatura03)(broj sati varira od tabele do tabele), koje treba prebaciti u trecu tabelu tako da u jednom redu budu vrednosti jednog sata.

Kako to da odradim dinamicki. Znaci kada se pojavi nova definicija tabele u prvoj tabeli da generise trecu tabelu i popuni podatcima od jednog sata?
NeverHood
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: MySQL i dinamicko kreiranje tabela.29.08.2011. u 15:56 - pre 154 meseci
najlakse ti je to da odradis na strani klijenta. teoretski bi verovatno moglo u stored procedure sa pepapre mada je realno lakse u klijentu
 
Odgovor na temu

*Winy*
NS

Član broj: 17202
Poruke: 119
*.adsl.eunet.rs.



+3 Profil

icon Re: MySQL i dinamicko kreiranje tabela.29.08.2011. u 16:07 - pre 154 meseci
Hvala na brzom udgovoru ali bi mi bila potrebna pomoc u resavanju sa procedurama i trigerima.
NeverHood
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: MySQL i dinamicko kreiranje tabela.29.08.2011. u 16:17 - pre 154 meseci
napravis trigger na on insert za tu tabelu "gde treba da se pojavi" koji bi to onda trebao da odradi ..

ali su ti informacije preopsirne za detaljniju pomoc od toga ...

ako ti se u tabeli X nalazi ceo alter onda on insert uradis prepare sa vrednoscu koja je poslata i exec onda toga ...

samo generalno - to je prilicno los koncept, ako hoces pomoc, aj objasni zasto to radis posto sam siguran da ima bolje resenje, to sto si zamislio, ako sam te dobro razumeo, ce da dangne ceo sistem vrlo brzo i ostavlja milion mesta za gresku
 
Odgovor na temu

*Winy*
NS

Član broj: 17202
Poruke: 119
*.opera-mini.net.



+3 Profil

icon Re: MySQL i dinamicko kreiranje tabela.29.08.2011. u 19:07 - pre 154 meseci
Hvala lepo jos jednom.
Radi se o php stranici koja cita vrednosti iz baze i prikazuje korisnicima. Ali svako ima svoju vrstu izvestaja jer ne zanimaju svakog iste stvari. Redove u prvoj tebli sa xml definicijama generise program na koji nemam uticaj isti popunjava i drugu tabelu ali u formi koja mi ne odgovara.
NeverHood
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: MySQL i dinamicko kreiranje tabela.29.08.2011. u 20:34 - pre 154 meseci
cek mislim da sam te pogresno razumeo ... ti imas u nekoj tabeli definiciju u nekom varchar/text polju koja je XML i od tog xml-a treba da uradis create table ovo ono ... zaboravi na trigere i stored procedure, napisi php koji ce to da radi (ili c ili c++ ili piton ili perl ili sta god ti je omiljeni skripting jezik), to ce se otelis u SP a pitanje da li uopste i moze da se napravi (mislim da ne moze)
 
Odgovor na temu

*Winy*
NS

Član broj: 17202
Poruke: 119
*.opera-mini.net.



+3 Profil

icon Re: MySQL i dinamicko kreiranje tabela.30.08.2011. u 06:40 - pre 154 meseci
Ok hvala,
Da li postoji nacin da trigger pozove php funkciju ili c funkciju?
NeverHood
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: MySQL i dinamicko kreiranje tabela.30.08.2011. u 06:50 - pre 154 meseci
teoretski - da - ti mozes da napravis UDF i da ga pozoves iz trigera, pogledaj dokumentaciju i primer

 
Odgovor na temu

*Winy*
NS

Član broj: 17202
Poruke: 119
*.adsl-a-13.sezampro.rs.



+3 Profil

icon Re: MySQL i dinamicko kreiranje tabela.04.09.2011. u 11:25 - pre 153 meseci
Hvala na pomoci, ali jos uvek nisam uspeo da resim svoj problem.
Da li neko moze detaljno da mi opise kako da napravim UDF u C++ ili C posto ne mogu da nadjem opsirnu dokumentaciju za to.
NeverHood
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: MySQL i dinamicko kreiranje tabela.04.09.2011. u 16:27 - pre 153 meseci
prvo - imas primer u postu pre tvog pitanja
drugo - google je tvoj prijatelj

da ne kazem da u mysql manualu imas sve sto ti treba samo isprati manual od pocetka do kraja
http://dev.mysql.com/doc/refman/5.5/en/adding-udf.html
http://dev.mysql.com/doc/refman/5.5/en/udf-calling.html
http://dev.mysql.com/doc/refman/5.5/en/udf-compiling.html


Gomilu primera udf funkcija imas u repozitorijumu mysql udf funkcija: http://www.mysqludf.org/


 
Odgovor na temu

*Winy*
NS

Član broj: 17202
Poruke: 119
*.adsl-a-13.sezampro.rs.



+3 Profil

icon Re: MySQL i dinamicko kreiranje tabela.04.09.2011. u 19:19 - pre 153 meseci
Hvala!
NeverHood
 
Odgovor na temu

*Winy*
NS

Član broj: 17202
Poruke: 119
*.adsl.eunet.rs.



+3 Profil

icon Re: MySQL i dinamicko kreiranje tabela.07.09.2011. u 14:28 - pre 153 meseci
Da li mozda neko ima ideju kako da resim ovu gresku.

errno: 22 /usr/lib/CrTable.so: undefined symbol: mysql_query

Greska se javlja nakon kompajliranja udf-a i postavljanja u direktorijum za shared objekte, pri kreiranju funkcije u MySQL-u.
NeverHood
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: MySQL i dinamicko kreiranje tabela.07.09.2011. u 14:47 - pre 153 meseci
lose si kompajlirao crTable

ti iz udf-a radis konekciju na mysql ?
 
Odgovor na temu

*Winy*
NS

Član broj: 17202
Poruke: 119
*.adsl.eunet.rs.



+3 Profil

icon Re: MySQL i dinamicko kreiranje tabela.07.09.2011. u 15:00 - pre 153 meseci
Hvala!

Iskreno receno pokusavam na bilo koji nacin. Znam osnovne stvari u MySQL-u, a ovo daleko prelazi tu granicu. Moram srediti to dodavanje tabele a nemam dovoljno znanja.
Ako imas kakvu ideju molim te napisi, a bio bih zahvalan i za objasnjenje.
NeverHood
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: MySQL i dinamicko kreiranje tabela.07.09.2011. u 15:54 - pre 153 meseci
neka ti udf funkcija vraca sql string za kreiranje tabele ...

za test uradi samo "SELECT tvojafunkcija(stagod)" i vidi da li dobijas nazads to kako treba

onda sa prepare to sto si dobio izvrsi
 
Odgovor na temu

*Winy*
NS

Član broj: 17202
Poruke: 119
*.adsl.eunet.rs.



+3 Profil

icon Re: MySQL i dinamicko kreiranje tabela.08.09.2011. u 13:31 - pre 153 meseci
Hvala!

Kada ubacim funkciju u prepare sa select-om:
PREPARE stmt FROM 'SELECT UDF()';
I pozovem EXECUTE stmt stampa mi return udf() funkcije.

Kada koristim bez select:
PREPARE stmt 'UDF()';
Stampa mi gresku pri inicijalizaciji:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'calc_distance_udf()' at line 1

Gde gresim?




NeverHood
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: MySQL i dinamicko kreiranje tabela.08.09.2011. u 13:46 - pre 153 meseci
sta ti kaze samo SELECT tvojudf(); ?
 
Odgovor na temu

*Winy*
NS

Član broj: 17202
Poruke: 119
*.adsl.eunet.rs.



+3 Profil

icon Re: MySQL i dinamicko kreiranje tabela.08.09.2011. u 13:49 - pre 153 meseci
Takodje mi stampa return udf() funkcije:

CREATE TABLE Proba (id int primary key, name varchar(40))engine=InnoDB;
NeverHood
 
Odgovor na temu

*Winy*
NS

Član broj: 17202
Poruke: 119
*.adsl.eunet.rs.



+3 Profil

icon Re: MySQL i dinamicko kreiranje tabela.08.09.2011. u 17:09 - pre 153 meseci
U prethodnim porukama si rekao da to odradim php-om ili nekim drugim jezikom. Mozes mi opisati kakva ti je bila zamisao.
Hvala!
NeverHood
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: MySQL i dinamicko kreiranje tabela.09.09.2011. u 02:37 - pre 153 meseci
u "drugom" jeziku je bilo da pozoves tvoj udf koji ce onda trigerovati neki tvoj jezik koji ce odraditi sta treba, drugi nacin je da imas tvoj app koji zoves iz krona svakih sat vremena ili jednom dnevno ili ... i koji odradi sta treba ..


... no to je sve moguce direkt iz stored procedure / trigera .. ne znam gde si zaglavio, evo ti primer kako to radi

Code:

mysql> drop table if exists t1;
Query OK, 0 rows affected (0.10 sec)

mysql> drop table if exists t2;
Query OK, 0 rows affected (0.00 sec)

mysql> drop table if exists t3;
Query OK, 0 rows affected (0.00 sec)

mysql> drop table if exists t4;
Query OK, 0 rows affected (0.00 sec)

mysql> drop table if exists t5;
Query OK, 0 rows affected (0.00 sec)

mysql> 
mysql> CREATE TABLE t1 (a varchar(500) );
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO t1 VALUES
    ->   ("CREATE TABLE t2 (x int, y int) engine=innodb"), 
    ->   ("CREATE TABLE t3 (x int, y int) engine=myisam"),
    ->   ("CREATE TABLE t4 (x int, y int) engine=myisam"),
    ->   ("CREATE TABLE t5 (x int, y int) engine=innodb");
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> 
mysql> DROP PROCEDURE IF EXISTS simpleproc;
Query OK, 0 rows affected (0.00 sec)

mysql> 
mysql> delimiter //
mysql> 
mysql> CREATE PROCEDURE simpleproc ()
    -> BEGIN
    ->   DECLARE var1 VARCHAR(500);
    ->   DECLARE gotovo BOOLEAN;
    ->   DECLARE cur1 CURSOR FOR SELECT a FROM t1;
    -> 
    ->   DECLARE CONTINUE HANDLER FOR NOT FOUND 
    ->   SET gotovo = TRUE;
    -> 
    ->   SET gotovo = FALSE;
    ->   OPEN cur1;
    -> 
    ->   glavna_petlja: LOOP
    -> 
    ->     FETCH cur1 INTO var1;
    -> 
    ->     IF gotovo THEN
    ->       CLOSE cur1;
    ->       LEAVE glavna_petlja;
    ->     END IF;
    -> 
    ->     SET @temp = var1;
    ->     PREPARE stmt1 FROM @temp;
    ->     EXECUTE stmt1;
    ->     DEALLOCATE PREPARE stmt1;
    -> 
    ->   END LOOP glavna_petlja;
    -> 
    -> END//
Query OK, 0 rows affected (0.00 sec)

mysql> 
mysql> delimiter ;
mysql> 
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t1             |
+----------------+
1 row in set (0.00 sec)

mysql> call simpleproc();
Query OK, 0 rows affected, 1 warning (0.02 sec)

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t1             |
| t2             |
| t3             |
| t4             |
| t5             |
+----------------+
5 rows in set (0.00 sec)

mysql> 


Sve sto ti ovde treba da uradis je da, posto nemas CREATE ovo ono u tabeli sa podacima nego negi XML, napravis svoju funkciju koja ce od XML-a napraviti CREATE i u ovoj skripti samo zamenis

SET @temp = var1;

sa

SET @temp = tvojudf(var1);

tvom udf-u se prosledi taj xml string i on vrati nazad create table ovo ono ...


 
Odgovor na temu

[es] :: MySQL :: MySQL i dinamicko kreiranje tabela.

Strane: 1 2

[ Pregleda: 4259 | Odgovora: 35 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.