Új hozzászólás Aktív témák

  • L3zl13
    nagyúr

    Adott egy kulfoldi fejlesztesu programcsomag, ami InterBase adatbazist hasznal.
    Problemam az, hogy akarhanyszor adatbazis hiba van, es kikuldom a gdb fajlt a fejlesztoknek, akkor mindig kulfoldi nyelvu adatokkal kapom vissza a javitott adatbazist.

    Kaptam a fejlesztoktol egy nagyonhosszu SQL fajlt, ami tele van UPDATE-ekkel, es vegignyalazza az adatbazist, mindent atirva angolra.
    Ezt megelozendo le szeretnem menteni a mostani _magyar_ adatbazisom tartalmat, hogy ha gond van, akkor egy SQL szkript lefuttatasaval visszairna az adatokat magyarra, mert nincs kedvem fel napokat ezzel az adatbazis kezi buheralasaval szorakozni.

    IBExperttel kinlodok egy jo ideje, extract metadata opcioja priman mukodik, csak eppen ilyen formaban hozza letre az SQL fajlt:
    INSERT INTO COUNTRY (ID, CODE, NAME, CLASSIFIER, CATEGORY, ENABLED, CODE2, INFO, PARAMSTR) VALUES (36, 'AO', 'ANGOLA', '024', 8, 1, 'AO', '', '');

    Ha ezt megetetem az InterBase SQL futtatojaval, allandoan hibat dob, hiszen mar letezik ilyen sor. :(

    Nekem valami ilyesmi formaban kellenenek:
    UPDATE COUNTRY SET
    CODE = 'AO',
    NAME = 'ANGOLA',
    CLASSIFIER = '024',
    CATEGORY = 2,
    ENABLED = 1
    WHERE (ID = 36);

    Letezik erre valami _jo_ program, ami ilyen UPDATE queryket general a meglevo tablakbol?

    Szvsz vagy valami viszonylag egyszerű scripttel átkonverálod az inserteket update-té, vagy létrehozol egy átmeneti táblát az adatbázisban, abba feltöltöd az insertekkel az adatot (Egy szövegszerkesztőben csere minddel átírod a táblanevet.) és utánna többsoros update-tel frissíted az éles táblát.
    Elvileg az InterBase is tud többsoros update-et.

    UPDATE Country
    SET CODE = (SELECT CODE FROM CountryTMP WHERE Country.ID=CountryTMP.ID),
    SET NAME = (SELECT NAME FROM CountryTMP WHERE Country.ID=CountryTMP.ID),
    SET CLASSIFIER = (SELECT CLASSIFIER FROM CountryTMP WHERE Country.ID=CountryTMP.ID),
    SET CATEGORY = (SELECT CATEGORY FROM CountryTMP WHERE Country.ID=CountryTMP.ID),
    SET ENABLED = (SELECT ENABLED FROM CountryTMP WHERE Country.ID=CountryTMP.ID);

    Csak akkor müxik, ha a beágyazott select-ek mindig csak egy sort adnak vissza.

Új hozzászólás Aktív témák