Portál AbcLinuxu, 12. května 2025 16:26

Dotaz: Problem s kodovanim pri prenose DB z mysql 4.0 na mysql 5.1

17.4.2007 20:54 depi | skóre: 10 | blog: Erik Gyepes | Nitra
Problem s kodovanim pri prenose DB z mysql 4.0 na mysql 5.1
Přečteno: 602×
Odpovědět | Admin
Zdravim.

Prenasam udaje z databazy zo stareho sytemu do noveho. Chcem to robit cez XML export a nasledne import cez PHP skript (pomocou SimpleXML) Sucasna databaza ma kodovanie v latin2 a ja ju potrebujem dostat do UTF-8.

Robim to takym sposobom, ze ju exportujem cez phpMyAdmina do XML a nasledne tento XML subor rekodujem pomocou 'recode latin2..utf8 databaza.xml'. Nasledne pomocou jednoducheho skriptu parsujem XML a v cykle vkladam do novej DB.

Problem je vsak taky, ze ciarky a makcene su rozhadzane. Problem s kodovanim. Sucasna databaza je mysql 4.0 a nova je mysql 5.1.

Ako by ste tento problem riesili?

Skusal som uz aj nieco taketo:
   1. Make database-backup using mysqldump:
      mysqldump -u user -p database > backupfile.sql
   2. Drop the extisting database
   3. Create new database
   4. Be sure this new empty database is utf8. E.g. execute:
      ALTER DATABASE databasename DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
   5. Modify the backupfile:
         1. Change charset to utf8, for example by using the external tool recode:
            RECODE latin1...utf8 backupfile.sql
         2. Change all the "crate table" statements in this dumpfile. You have to replace "CHARSET=latin1" with "CHARSET=utf8". This can be done by using the commandline-tool sed:
            sed 's/CHARSET=latin1/CHARSET=utf8/' backupfile.sql > backupfile_utf8.sql
   6. Insert the changed databasedump:
      mysql -u user -p database < backupfile_utf8.sql
Tiez som moc neuspel :(
depi.sk - IT & Life Weblog
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.4.2007 23:14 JZ | skóre: 18 | blog: tucnakovo_putovani
Rozbalit Rozbalit vše Re: Problem s kodovanim pri prenose DB z mysql 4.0 na mysql 5.1
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zdravim, ten navod je spravny. Kdyz jedete podle toho navodu, je ten soubor backupfile_utf8.sql opravdu v kodovani UTF-8? Pokud ano a neni v nem problem s diakritikou, tak pak leda, ze by nebyla ta databaze v UTF-8. Ja jsem takhle premigroval nekolik desitek databazi behem nekolika minut a v podstate bez problemu.

Pak mozna jeste jedna vec: urcite je ten problem s diakritikou v te databazi? Neni treba az v zobrazeni tech dat?
There can be no success without sacrifice!
8.5.2007 01:54 Peter Šantavý | skóre: 22 | blog: Obcasnik
Rozbalit Rozbalit vše Re: Problem s kodovanim pri prenose DB z mysql 4.0 na mysql 5.1
Tieyz sa pridavam - navod je spravny.

Ak by bol problem v zobrazeni dat, tak vo viacerych pripadoch pomohlo pridat po selecte databazy (napr. mysql_select_db($dbname, $db)) nasledovne:

MySQL_Query( "SET CHARACTER SET utf8" );
8.5.2007 02:50 Libor Klepac | skóre: 45 | Mýto
Rozbalit Rozbalit vše Re: Problem s kodovanim pri prenose DB z mysql 4.0 na mysql 5.1
Odpovědět | | Sbalit | Link | Blokovat | Admin
a neni cele to prekodovavani zbytecne? snad staci vytvorit db a tabulky v utf8, udelat export dat ze stare db (pokud zustane v latin2), nekam na zacatek dat dotaz "set names latin2" (pokud je export db opravdu v latin2), cimz nastavim kodovani spojeni na latin2 a mysql server vi, v jakem kodovani ma ocekavat data a pak to importnout ....
Urine should only be green if you're Mr. Spock.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.