[ mickey_zg @ 18.03.2009. 14:13 ] @
Imam mali problemčić sa command promptom...

Konkretno trebam jedan batch fajl (WinXP) kojime bih iz tablice jedne baze prebacivao određene podatke u tablicu druge baze (strukture tablica su iste)

Batch fajl sam napravio, ali mi muke zadaju "<" i ">" znakovi. Probao sam na sve moguće i nemoguće načine ubaciti te znakove, ali ih command promt uporno interpretira kao svoje naredbe. Osim ako znak "<" stavim u navodnike, ali onda dobijem sql upit

insert into test1.tbl (select * from test.tbl where datum "<"

kojega mysql ne razumije.

Pokušao sam sa CHR(62), CHR$(62) &CHR(62), ali bez rezultata

batch fajl se poziva sa parametrima početnog i završnog datuma u mysql formatu, i to mi funkcionira.

@ECHO off

SETLOCAL
SET tbl_in=test1.tbl
SET tbl_out=test.tbl
SET pocetak=%1
SET kraj=%2
SET veci="<"
SET manji="<"
SET upit=insert into %tbl_in% (select * from %tbl_out% where datum < %1 and datum > %2)

echo %upit% > upit.sql

call c:\mysql\bin\mysql -uroot < c:\upit.sql


Ima li tko kakvu pametnu ideju?
[ bogdan.kecman @ 18.03.2009. 20:53 ] @
koliko ja vidim ovo nema nikakve veze sa mysql-om i trebalo je osatti u "windoze stagod" posto je ovo cisto BAT interpreter problem i nema nikakve veze sa tim sto covek pokusava iz BAT skripte pozvati nesto iz mysql-a .... al ajde da proverimo sa OP-om :)


tvoj skript izgleda ovako:
Code:

@ECHO off

SETLOCAL
SET tbl_in=test1.tbl
SET tbl_out=test.tbl
SET pocetak=%1
SET kraj=%2
SET veci="<"
SET manji="<"
[red]SET upit=insert into %tbl_in% (select * from %tbl_out% where datum < %1 and datum > %2)[/red]

echo %upit% > upit.sql

[red]call c:\mysql\bin\mysql -uroot < c:\upit.sql[/red]


pogledaj liniju SET upit = ... tu imas < i > koji ti razbiju koncept BAT interpretera .. nisam ljubitelj windoza ali ako se dobro secam stavljanje toga pod navodnije ce odraditi posao ... doduse mozda ona glupi windoze doda i te navodnike u varijablu pa si tek onda nadrljai :D :D :D ... sta da ti radim, BAT nije zamisljen za neko vajno skriptovanje :(

dalje ... ne mozes da pozivas EXE sa CALL (zadnja linija), sa CALL se poziva drugi BAT, exe pozivas bez call ...

e sada, da se ne bi smarao sa svim tim ... koristi BETWEEN umesto <>, em je brze em nema ta dva karaktera koji zbunjuju BAT interpreter
http://dev.mysql.com/doc/refma...perators.html#operator_between



[ mickey_zg @ 19.03.2009. 08:08 ] @
Ako dolaziš u Zagreb, imaš pivo od mene

Hvala na pomoći, sa "between" radi još bolje i bez greške u interpreteru.
Čovjek uči dok je živ.
[ bogdan.kecman @ 19.03.2009. 08:34 ] @
hvala unapred...

uvek koristi between umesto < > posto ubrzavas optimizer i osiguravas se da doticni zna koji execution path da koristi ...

sto se spomenutog interpretera tice, nemoj da me drzis za rec ali bila je prica da ce neki "iskusan" skripting jezik da bude za windoze uz vistu i da je taj "shell" dostupan i za ove "starije" poput xp-a i w2k .. dal se zove supershell, powershell, turboshell... tako nesto .. navodno je "mocan"... nisam probao, ali od ljudi koji su unix wiz-ovi sam cuo da im se svideo tako da kapiram da je m$ (ako su ga uopste oni pravili) napravio dobru stvar - vredi probati ako si vezan za windoze


EDIT: powershell:
http://www.microsoft.com/techn...enter/topics/msh/download.mspx
http://www.microsoft.com/windo...ement/powershell/download.mspx