Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Zmena kodovania win1250 -> utf8  (Přečteno 6711 krát)

bambulko

  • Aktivní člen
  • *
  • Příspěvků: 113
Zmena kodovania win1250 -> utf8
« kdy: 05 Prosince 2009, 14:32:31 »
ahojte
potreboval by som staru mysql databazu vo win-1250 skonvertovat do utf8. je na to nejaky nastroj? diky za pomoc
FUJITSU; Ubuntu 12.04

wam]Spider007

  • Host
Re: Zmena kodovania win1250 -> utf8
« Odpověď #1 kdy: 05 Prosince 2009, 15:14:06 »
nastroj na to asi nie je, alebo o ziadnom neviem. Da sa to ale urobit rucne. Sam som to niekolkokrat robil (i ked to bolo z latin1 do UTF8).

Urobis si kompletny dump databazy, co vlastne vytvori textak kde su scripty pre vytvorenie tabuliek, naplnenie datami etc.
Prva vec co je dolezita. Nastavit si v mysql globalne kodovanie na utf8 pomocou globalnych premennych. Aby nastavenia ostali zachovane je potrebne tieto hodnoty dat do /etc/mysql/my.cnf do sekcie [mysqld].

Potom treba otvorit dump databazy a ku kazdej tabulke navolit spravnu collation (teda UTF8). Subor ulozit a urobit restore databazy.

bambulko

  • Aktivní člen
  • *
  • Příspěvků: 113
Re: Zmena kodovania win1250 -> utf8
« Odpověď #2 kdy: 05 Prosince 2009, 15:17:26 »
no... takto som to nejak planoval, ale kedze ten subor ma 12MB... ;)
FUJITSU; Ubuntu 12.04

wam]Spider007

  • Host
Re: Zmena kodovania win1250 -> utf8
« Odpověď #3 kdy: 05 Prosince 2009, 15:19:34 »
no 12 MB je dost...ja som mal asi 6MB velky dump :D a ked som to otvoril cez gedit, tak sa z toho nespamatal :D.
Ale geany si s takymto suborom hravo poradi :)

bambulko

  • Aktivní člen
  • *
  • Příspěvků: 113
Re: Zmena kodovania win1250 -> utf8
« Odpověď #4 kdy: 05 Prosince 2009, 16:16:16 »
co je geany?
FUJITSU; Ubuntu 12.04

Kedrigern

Re: Zmena kodovania win1250 -> utf8
« Odpověď #5 kdy: 05 Prosince 2009, 16:48:09 »
sudo apt-get install geany - nejlepší programátroský editor pro Xka (jinak pochopitelně VIM  :) ). Mohu jen doporučit - dobře zvýrazňuje, má mnoho užitečných funkcí, pluginy, kompiluje, spouští... a přitom je velice systémově náročný oproti Monu Develop či prostředím pro Javu.

q66

Re: Zmena kodovania win1250 -> utf8
« Odpověď #6 kdy: 05 Prosince 2009, 16:49:52 »
co třeba enca??

edit: aha to je databáze :)
sw engineer @ samsung research UK, efl developer
octaforge developer (https://octaforge.org)
freebsd user

bambulko

  • Aktivní člen
  • *
  • Příspěvků: 113
Re: Zmena kodovania win1250 -> utf8
« Odpověď #7 kdy: 05 Prosince 2009, 17:50:50 »
sudo apt-get install geany - nejlepší programátroský editor pro Xka (jinak pochopitelně VIM  :) ). Mohu jen doporučit - dobře zvýrazňuje, má mnoho užitečných funkcí, pluginy, kompiluje, spouští... a přitom je velice systémově náročný oproti Monu Develop či prostředím pro Javu.

ja robim vascinou php, html, css. co quanta+ ?
FUJITSU; Ubuntu 12.04

wam]Spider007

  • Host
Re: Zmena kodovania win1250 -> utf8
« Odpověď #8 kdy: 05 Prosince 2009, 19:02:23 »
sudo apt-get install geany - nejlepší programátroský editor pro Xka (jinak pochopitelně VIM  :) ). Mohu jen doporučit - dobře zvýrazňuje, má mnoho užitečných funkcí, pluginy, kompiluje, spouští... a přitom je velice systémově náročný oproti Monu Develop či prostředím pro Javu.

nechel si napisat "systemovo nenarocny"? :)

bambulko

  • Aktivní člen
  • *
  • Příspěvků: 113
Re: Zmena kodovania win1250 -> utf8
« Odpověď #9 kdy: 05 Prosince 2009, 19:26:12 »
no... mozem vam povedat, ked mam otvorit to sql v geany alebo quanta+....strasne nieco. 20min cakania. zlate windowsy a pspad. otvorene za 15sec
FUJITSU; Ubuntu 12.04

wam]Spider007

  • Host
Re: Zmena kodovania win1250 -> utf8
« Odpověď #10 kdy: 05 Prosince 2009, 19:57:15 »
hmm....teraz som skusil 3MB dump otvorit cez geany a nervalo to ani 1 sec. Takze 12 MB neverim, ze otvara 20 minut.

bambulko

  • Aktivní člen
  • *
  • Příspěvků: 113
Re: Zmena kodovania win1250 -> utf8
« Odpověď #11 kdy: 05 Prosince 2009, 22:08:08 »
no... mne to okno zosedlo a nic. po 20 min som ho zhodil a restartol do win ;)
ale trt mi to pomohlo ;( mysql administrator mi databazu v 1250 backupol do utf8 a mam v tom gulas :(
FUJITSU; Ubuntu 12.04

wam]Spider007

  • Host
Re: Zmena kodovania win1250 -> utf8
« Odpověď #12 kdy: 05 Prosince 2009, 22:59:08 »
a neurobil si nahodou pred backupom zmenu kodovania na mysql servery? to treba spravit az po zalohe a pred obnovenim.

mka

  • Závislák
  • ***
  • Příspěvků: 1907
  • Chybovat je moje.
    • Příložany Cé Zet
Re: Zmena kodovania win1250 -> utf8
« Odpověď #13 kdy: 06 Prosince 2009, 10:53:34 »
Kód: [Vybrat]
$tables = $dbl->tabList($database);
if(is_array($tables))
{
$dbq = new cdbQuery(&$dbl);
foreach($tables as $table)
{
$dbq->query("ALTER TABLE `$table` CONVERT TO CHARACTER SET $charset COLLATE $collate");
if($dbq->error)
echo "<p>$table : " . $dbq->error . "</p>\n";
else
echo "<p>$table OK.</p>\n";
flush();
}
$dbq->query("ALTER DATABASE `$database` DEFAULT CHARACTER SET $charset COLLATE $collate");
}
Ber to jenom jako návod - využívám tam svoje speciální třídy (dbl, dbq, ...). Nicméně princip je doufám zřejmý: MySQL si to prostě umí překonvertovat sama. Používal jsem to kdysi, když jsem se definitivně rozloučil s Wokny.

bambulko

  • Aktivní člen
  • *
  • Příspěvků: 113
Re: Zmena kodovania win1250 -> utf8
« Odpověď #14 kdy: 06 Prosince 2009, 11:15:44 »
ak dom dobre pochopil, tak

ALTER TABLE `$table` CONVERT TO CHARACTER SET $charset COLLATE $collate 

robi konverziu tabulky?
FUJITSU; Ubuntu 12.04

mka

  • Závislák
  • ***
  • Příspěvků: 1907
  • Chybovat je moje.
    • Příložany Cé Zet
Re: Zmena kodovania win1250 -> utf8
« Odpověď #15 kdy: 06 Prosince 2009, 11:29:16 »
viz např. http://dev.mysql.com/doc/refman/5.0/en/alter-table.html.
Už je to dlouho, co jsem to potřeboval a nenosím všechno v hlavě. Tož tak. A že máš nejprve zálohovat snad připomínat nemusím :-)

bambulko

  • Aktivní člen
  • *
  • Příspěvků: 113
Re: Zmena kodovania win1250 -> utf8
« Odpověď #16 kdy: 06 Prosince 2009, 11:42:52 »
jasne. dik za nakopnutie ;)
FUJITSU; Ubuntu 12.04

René Baran

  • Návštěvník
  • Příspěvků: 75
    • http://linux.remontsw.eu
Re: Zmena kodovania win1250 -> utf8
« Odpověď #17 kdy: 06 Prosince 2009, 22:35:56 »
Ahoj

uz jsem jednou neco takoveho resil.

1. udelal jsem mydqldump
2. pomoci utilitky recode jsem to prekodoval
3. zmenim si v nastaveni typ kodovani mysql databaze
4. zpetne jsem nacetl ten dump pres mysql client (command line)


recode je utilitka pro prekodovani textovych souboru a je vynikajici

syntaxe:   recode kod_z..kod_do soubor
priklad:     recode windows-1250..utf-8 mydump.sql


Instalace utilitky:   apt-get install recode

Mozna je to slozitejsi postup, ale mne fungoval.

Rene



bambulko

  • Aktivní člen
  • *
  • Příspěvků: 113
Re: Zmena kodovania win1250 -> utf8
« Odpověď #18 kdy: 07 Prosince 2009, 20:02:04 »
toto som chcel :) recode
dakujem
FUJITSU; Ubuntu 12.04

René Baran

  • Návštěvník
  • Příspěvků: 75
    • http://linux.remontsw.eu
Re: Zmena kodovania win1250 -> utf8
« Odpověď #19 kdy: 07 Prosince 2009, 22:40:58 »
Zdravim.

Za malo.


V PHP lze jeste pouzit funkci iconv.


iconv
=============

http://recode.progiciels-bpi.ca/README.html
http://www.php.net/manual/en/function.iconv.php


Jinak utilitka recode existuje i pro Windows. Je soucasti balicku "UnxUtils". To je balicek nekterych linuxovych utilit portovanych do Windows.


UnxUtils
=============

http://unxutils.sourceforge.net/
http://sourceforge.net/projects/unxutils/files/

Rene



mka

  • Závislák
  • ***
  • Příspěvků: 1907
  • Chybovat je moje.
    • Příložany Cé Zet
Re: Zmena kodovania win1250 -> utf8
« Odpověď #20 kdy: 08 Prosince 2009, 09:25:33 »
Nic proti překódování texťáku, René, ale to je bohužel jen půlka práce. Pak ještě musíš přepsat všechny cp1250 na utf8 atd atd. Z mého pohledu trochu vopruz, když to jde udělat pomocí alter table.

René Baran

  • Návštěvník
  • Příspěvků: 75
    • http://linux.remontsw.eu
Re: Zmena kodovania win1250 -> utf8
« Odpověď #21 kdy: 08 Prosince 2009, 13:13:08 »
Zdravim.

Dobra pripominka. Je to pracnejsi a trochu neohrabany to je fakt (cely ukon netrva dele nez 5 min i s prepsanim windows 1250 na UTF 8). Ale vuci alter table to preci jen je takove "zacatecnicke". Byla to pouze dalsi alternativa, ktera funguje. At si Bambulko vybere. Hlavne, ze dosahne tizeneho vysledku (rychlejsi jak prekodovavat dump v textaku). Pokud by to vsak pouzival denne, tak je to zas o necem jinem. Sam bych si z hlavy na vse nevzpomnel. Delam v Oracle.

Na druhou stranu recode muze pouzit i pri jinych konverzich kodovani a ne jen u mysqldumpu. A pokud bude chtit pouzivat alter table, tak si to nastuduje.


R.

« Poslední změna: 08 Prosince 2009, 13:22:13 od René Baran »

wam]Spider007

  • Host
Re: Zmena kodovania win1250 -> utf8
« Odpověď #22 kdy: 08 Prosince 2009, 15:23:21 »
Nic proti překódování texťáku, René, ale to je bohužel jen půlka práce. Pak ještě musíš přepsat všechny cp1250 na utf8 atd atd. Z mého pohledu trochu vopruz, když to jde udělat pomocí alter table.

Alter table ti nepomoze. Ak urobis alter table kde nastavis tabulke nove collation a v tabulke uz existuju data, tak sa priprav na dovrzanu diakritiku. Ono sa to cez convert ci upravu dumpu nerobi pre srandu kralikov.

mka

  • Závislák
  • ***
  • Příspěvků: 1907
  • Chybovat je moje.
    • Příložany Cé Zet
Re: Zmena kodovania win1250 -> utf8
« Odpověď #23 kdy: 08 Prosince 2009, 15:50:41 »
Seš si jistej?
Jak jsem již psal, dělal jsem to už dávno, takže si to moc nepamatuju. Ale je docela možné, že jsem to onehdá dělal společně s dumpem: alter table na změnu struktury a potom import dat ze souboru.
Nicméně pokud dobře čtu v dokumentaci k MySQL, tak by to fungovat MĚLO. Viz odkaz výše.

wam]Spider007

  • Host
Re: Zmena kodovania win1250 -> utf8
« Odpověď #24 kdy: 08 Prosince 2009, 16:13:05 »
no pozrel som si link, ktory si poslal vysie a aj predosle odpovede a uz som to pochopil.
tam je to sice alter table, ale pouziva sa tam prikaz convert o ktorom som predtym nevedel, takze sa ospravedlnujem za moju predchadzajucu zavadzajucu odpoved. v mysql sa este tak neorientujem :) pracujem viac menej s MS SQL.
ono totiz je aj alter table kde len povies, ze ma zmenit collate a to uz spravi nepekne veci (ak su v tabulke data).

skusim to ale este pre istotu otestovat doma a pripadne napisat prikaz, ktory bude vediet pomocou curzoru prekonvertovat vsetky tabulky danej DB :)

 

Provoz zaštiťuje spolek OpenAlt.