MySQLDump parancsfájlból vagy netbeans-ből
2012-02-13T02:55:47+01:00
2012-02-15T03:10:07+01:00
2022-06-29T04:15:50+02:00
infje
Üdv.

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.)

Ha valaki tud segíteni előre is köszönöm!
Mutasd a teljes hozzászólást!
No sikerült:

git.bat:
if not exist %1 exit set bash=C:\Program Files (x86)\Git\bin\bash.exe "%bash%" --login -i -c "exec "%1""

Ehhez társítottam a .hook kiterjesztést, és a már bemutatott git-es kód lefutott...
Mutasd a teljes hozzászólást!

  • A *.bat helyett *.cmd-t használj.

    pl.: infje.cmd


    "c:\konyvtarneve\mysql\bin\mysqldump.exe" -uuser -ppsswd blabla [clientes, usuarios, proyectos, proveedores, areas_negocio, costes] --opt 1>tmp.sql

    TODO: A prog.hu-n amit írtál azért nem jó, mert a
    dump program nem Unicode-t használ, hanem ASCII-t
    .

    Szóval felejtsd el ezeket a karaktereket: @ $ >

    1 másik megoldás pl.:
    (mysqldump -uroot -p --databases nonexistent | out-file C:\backup.sql -enc ascii) 2>&1
    Mutasd a teljes hozzászólást!
  • 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.)

    Majd este kipróbálom amiket írtál, köszi.
    Mutasd a teljes hozzászólást!
  • 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...
    Mutasd a teljes hozzászólást!
  • 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...
    Mutasd a teljes hozzászólást!
  • meghal a szóközös elérési utaktól


    És te mitől halsz meg?
    A szóközös útvonalakat idézőjelek közé kell tenni.
    Mutasd a teljes hozzászólást!
  • Szerinted nem tettem?

    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...
    Mutasd a teljes hozzászólást!
  • Úgy döntöttem, hogy átemelem ide prog.hu-ról a kódot, és bezárom azt a témát.

    Ez a git-es kód, ami működik, viszont git konzolos dolgokból tudtommal nem lehet futtatható micsodát csinálni. (de lehet tévedek)
    cd "$(git rev-parse --show-toplevel)" rm -f "WebShop\DataBase\backup.sql" exec "C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump.exe" --skip-comments -u root --password=root webshopdb |sed 's$),($),\n($g' > "WebShop\DataBase\backup.sql"


    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...)
    Mutasd a teljes hozzászólást!
  • 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.
    Mutasd a teljes hozzászólást!
  • 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 ...)
    Mutasd a teljes hozzászólást!
  • No sikerült:

    git.bat:
    if not exist %1 exit set bash=C:\Program Files (x86)\Git\bin\bash.exe "%bash%" --login -i -c "exec "%1""

    Ehhez társítottam a .hook kiterjesztést, és a már bemutatott git-es kód lefutott...
    Mutasd a teljes hozzászólást!
abcd