Hi All!
Ezzel a scriptemmel szeretnek sql-t konvertalni, de amikor az ekezetekhez er, akkor elszall.
ha tesztkent keszitek egy pr soros fajlt random ekezetekkel, akkor azon jol mukodik.
Mit rontok el amiert elszall a sed az ekezetnel? (ps.: tudom en is egyszeruiteni ezt a scriptet, azert bontottam szet, hogy lassam hol szall el)
#!/bin/bash
mysqldump --user=root -p cc_intranet > $HOME/dump.sql
# string csere Latin1 > UTF-8
cat $HOME/dump.sql | sed s/latin1/utf8/g > $HOME/dump-utf8.sql
# Csere őŐűŰ betuket utf-8-ra, mert most latin1 swedish (õő ÕŐ ûű ÛŰ)
cat $HOME/dump-utf8.sql | sed s/õ/ő/g > $HOME/dump-utf8.sql # itt elszall.
cat $HOME/dump-utf8.sql | sed s/Õ/Ő/g > $HOME/dump-utf8.sql
cat $HOME/dump-utf8.sql | sed s/û/ű/g > $HOME/dump-utf8.sql
cat $HOME/dump-utf8.sql | sed s/Û/Ű/g > $HOME/dump-utf8.sql
mysqldump --user=root -p cc_intranet_utf8 < $HOME/dump-utf8.sql
echo "Kész..."
- 3017 megtekintés
Hozzászólások
ooops.. lehet az gond, hogy visszairom ugyanabba a fajlba az adatot :)
na teszt :P
- A hozzászóláshoz be kell jelentkezni
Hát az gáz :) Akkor sem elszall szerintem, hanem 0 byteosra trunc-olja a filet. Legalábbis mikor én szívtam pont ilyennel, nekem ez történt.
--
God bless IQ
- A hozzászóláshoz be kell jelentkezni
Igen, ez volt a gond :) Akkor az utokornak:
Problema
Adatbazisom evek ota latin1-ben mukodott, de php-bol latin2-vel tomtem.
Az adatbazist atmasoltam egy UHU 2.0-ra ami alapbol utf8-at hasznal, majd szerkesztettem az /etc/my.cnf fajt emigyen:
[mysqld]
default-character-set = latin1
default-collation = latin1_swedish_ci
Ezutan:
service mysqld restart
Majd az alabbi script segitsegevel atalakitottama dump fajlt:
#!/bin/bash
mysqldump --user=root -p cc_intranet > $HOME/dump.sql
cat $HOME/dump.sql | sed -e s/latin1/utf8/g -e s/õ/ő/g -e s/Õ/Ő/g -e s/û/ű/g -e s/Û/Ű/g > $HOME/dump-utf8.sql
mysqldump --user=root -p cc_intranet_utf8 < $HOME/dump-utf8.sql
echo "Kész..."
... most itt tartok. majd folytatom, ha elkeszultem vele. (mert lehetnek meg gondok)
- A hozzászóláshoz be kell jelentkezni
'sed -i' a te barátod...
- A hozzászóláshoz be kell jelentkezni
Hatékonyabb kb így szoktam ezt:
sed -i "s/latin1/utf8/g;s/õ/ő/g;s/Õ/Ő/g;s/û/ű/g;s/Û/Ű/g" $HOME/dump.sql
--
A nyúl egy igazi jellem. Ott ül a fűben, de akkor sem szívja!
- A hozzászóláshoz be kell jelentkezni
Miért nem csere-berével csináljátok...? o_O
sed -i "s/latin1/utf8/g;y/öÖüÜ/őŐűŰ" $HOME/dump.sql
Tudom, ez csak fikázás, de azért mégiscsak kevésbé kopik a klaviatúra. :P
Egyébiránt nem igazán értem a kettő közti különbséget: miért kell az 's' végére 'g', az 'y'-hoz meg nem kell...?
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.
- A hozzászóláshoz be kell jelentkezni
iconv(1) a szokásos eszköz
pl: iconv -f latin2 -t utf8 to
- A hozzászóláshoz be kell jelentkezni
tudom de elotte kellet a sed, mert az ekezetes betuk latin1-ben voltak es latin2 konvertalashoz kellett a sed-del valo szekesztes, majd konvertaltam az altalad emlitett modon utf8-ba a dumpfajlokat.
- A hozzászóláshoz be kell jelentkezni