Egy mysql adatmentési és helyreállítási művelet során egy probléma merült fel: miután a sqlyog adatmentéshez használták, majd az adatokat egy másik szerveren visszaállították, a "'" elválasztó eltűnt az egyik tábla varbináris mezője miatt (a bináris kódolás problémája miatt a idézőjel elválasztót az adatok részeként kezelték), így az adatokat nem lehetett normálisan importálni.
Néhány szöveges eszközt használtak feldolgozásra, de ezek sikertelenek voltak, néhányat felismerni lehetett, de automatikusan módosították a bináris kódolt adatokat, mások pedig más bináris adatokat helyeztek be, így továbbra is olvashatatlan maradt.
Szóval más módszereket is fontolj meg: olvasd el az adatokat, írd be az SQL utasítást, majd importáld azt. A konkrét módszerek a következők:
(1) Használja a HEX függvényt az adatok olvasásához exportáláskor, és a bináris adatokat hatdexetimális láncsorrá alakítsa;
a testTable-ből válassza a HEX(binField)-et;
(2) Az UNHEX függvényt használjuk a hathatdecimális lánci szöveg átalakítására az importálás során;
insert a testTable binField values(UNHEX(@hexstr));
Az alábbi kód bemutatja a HEX és UNHEX funkcionalitását:
VÁLASZD a HEX-et ('ez egy teszt erő'), és a lekérdezés eredménye a következő: 746869732069732061207465737420737472 VÁLASSZUK KI AZ UNHEX('746869732069732061207465737420737472'), és a lekérdezés eredménye a következő: ez egy teszt str
Közvetlenül is olvashatod a hexadecimális karaktert, hozzáadva egy 0x előtagot a láncszálhoz: SELECT 0x746869732069732061207465737420737472, a lekérdezés eredménye: ez egy teszterő
Ezen felül bináris importálási és exportálási módszereket is használhatsz adatok mentésére és visszaállítására. Itt nincs vita.
|