Szeretnék windows 7-en parancsfájlból vagy netbeans-ből mysqldump-ot hívni. Egy adatbázis tartalmát szeretném betenni egy fájlba. A problémám az, hogy eddig mindösszesen git-ben sikerült elérni a kívánt hatást, viszont abból nem tudok parancsfájlt csinálni, mert git shell alatt fut. Netbeans-ből talán van lehetőség git pluginnel történő futtatásra, de nem jöttem rá hogyan.
Amivel még próbálkoztam: wsh-jscript (exec, run, run+cmd.exe, run+git shell exe), bat, parancsikon stb... Egyik sem csinálta meg a dump fájlt. Tanácstalan vagyok.
(Ugyanezt a témát kitettem prog.hu-ra, mert félig üzemeltetési, félig meg programozós kérdés.)
TODO: A prog.hu-n amit írtál azért nem jó, mert a dump program nem Unicode-t használ, hanem ASCII-t.
Nem értem, akkor hogy lehet, hogy gitből ugyanaz működött? (Amúgy a sed-es micsoda, ahol a $ is van azt csinálja, hogy a több soros INSERT-et feldarabolja, hogy a fájlban is több sor legyen.)
mert a dump program nem Unicode-t használ, hanem ASCII-t.
Ezt kizártnak tartom, a kimeneti fájl utf8 bom nélkül, ha a git-ből hívom... Lehetséges, hogy ez adatbázis függő, az adatbázisom utf-8 as. Elég meglepő lenne, ha ezek után ascii-t használna, akár még a bemeneti paraméterek között is...
Kipróbáltam a cmd-t (közben rájöttem, hogy már előbb is kipróbáltam, csak WSH-ból hívva). Ennek az a baja, hogy meghal a szóközös elérési utaktól. Ami fix, hogy én nem fogok hullámos vonalakkal, meg DOS-os nevekkel szórakozni, akkor már inkább másolom be a konzolba a kódot...
Egyébként a windows-os cli-től halok meg Minden szál cigi 1 nappal rövidíti az életet, viszont minden alkalom, amikor windows cli-hez kell nyúlni 1 évet vesz el...
Ez a WSH JScript-es kód, ami ugyan visszaad valami olyasmit az echo-ban, mint a dump fájl fejléce, viszont semmi más nem történik. Tehát a mysqldump lefut, viszont nem tudom, hogy miért nem hozza létre a fájlt. Fogalmam sincs hogyan lehetne debuggolni...
var shellObj = WScript.CreateObject('WScript.Shell');
var exec = shellObj.Exec(
'"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump.exe"'+
" --skip-comments -u root --password=root webshopdb |sed 's$),($),\n($g' > " +
'"D:\creation\software developer\projects\webshop-refactoring-project\document root\WebShop\DataBase\backup.sql"'
);
WScript.Echo(exec.StdOut.ReadAll());
(A cmd.exe-t debuggolásra próbáltam használni a Run-al, meg a /k-val, ami nyitva tartja az ablakot, viszont ugyanúgy, mint bat fájlból nem fogadta el a szóközös útvonalat...)
Ami meg hát jó lenne, ha netbeans-ből tudnék dumpolni a projekthez, mert ez az adatbázis verziókezeléséhez kell.
(A sed-es darabolás azért került bele, hogyha recordot törlök, vagy viszek fel, akkor az látszódjon a módosításoknál, ne pedig csak az összes recordot tartalmazó sornál mutasson valami módosítást. A skip comments meg azért került bele, mert a láblécben benne van az elkészítés dátuma, ami meg minden dumpnál committálandó módosításnak számítana különben...)
Szerintem a WSH cli nem ismeri a sed-et, és ez lehet az egyik gond, az útvonalakkal úgy néz ki, hogy nincs baj, amíg nem próbálom meghívni a cmd.exe-t. Viszont anélkül meg nehéz debuggolni, hogy nyitott ablak lenne. Elég fura, kíváncsi vagyok, hogy a WSH milyen cli-be exec-el meg run-ol, mert az útvonalas próblémák hiánya miatt úgy néz ki, hogy nem a cmd.exe-t használja.
Megpróbálom valahogy a git shell-t hívni exec-el. Run-nal nem jött össze, új ablakot nyitott mindnek (valszeg az exec is külön szálon futtatja majd az összes kérést). Kíváncsi vagyok, hogy vajon nem e lehet több command-et hívni egyetlen exec-el vagy runnal a git shellben.
Ami működne, ha sikerülne csinálni egy olyan bat fájlt, amihez git command-eket tartalmazó fájlokat tudok társítani, mert ahogy nézem a git bash képes command-eket tartalmazó txt fájlokat futtatni... A bat fájllal viszont megint előjön az útvonalas gond :S (no majd még agyalok rajta, de ez eddig a legígéretesebb ötlet ...)