[BSD] nagy allomanyon beluli karakter-konverzio
Laszlo Nagy
gandalf at shopzeus.com
2008. Ápr. 16., Sze, 14:28:44 CEST
Fazekas Mihály wrote:
> Sziasztok,
>
> Adott egy sql dump (~2.5G).
>
> Nehany tabla nem UTF8 -ban lett hasznalva, ezert a visszatoltesnel
> hisztizik:
> ----------------------------------------
> invalid byte sequence for encoding "UTF8".
> ----------------------------------------
>
>
> Hogy lehet ezt megcsinalni?:
> 1. lepes: mgkeresi a "COPY <tablename>" -vel kezdodo sort
> 2. mindaddig cserelgeti (iconv -vel konvertalgatja,....), ameddig
> el nem er akovetkezo "COPY ...." -val kezdodo sorra
> (Sajnos ilyen szinten nem ertek a regex -hez meg hasonlokhoz :( )
>
> Ha ez egyszerubb lenne, akkor ez is megfelel:
> Pl. iconv -vel cserelgeti a(z iso8859-2 -es) karaktereket
> UTF -8 -ra, de ha UTF-8 -at talal, akkor azt ne cserelgesse,
> csak siman tegye ki az output -ra.
>
Én így csinálnám:
- több SQL dump-ot csinálnék, az egyikben csak a "rossz" táblák adatai
szereplenek, semmi más
- ezt a dump-ot egy az egyben konvertálnám iso8859 akármiről UTF-8-ra
mivel adaton kívül csak COPY van benne meg mezőnevek amik kb. 100%
eséllyel ugyan azok latin2-ben mint utf-8 ban, hacsak nem használtál
ékezetes mezőveneket :-D
- visszatöltés megfelelő sorrendben
Ez a "több dump-ot csinálnék" lehet hogy így nem fog menni mert már
nincsen semmi amibe visszatöltheted, ilyenkor szét kell vágni az eredeti
dump-ot több részre, a megfelelőket átkódolni aztán a megfelelő
sorrendben összeilleszteni őket...
Hát én ezt csinálnám. :-)
Üdv,
Laci
További információk a(z) BSD levelezőlistáról