[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