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

Dotaz: Bash: import českých znaků do mysql

20.3.2007 16:31 my
Bash: import českých znaků do mysql
Přečteno: 747×
Odpovědět | Admin
Chci přes bash, kde je kódování utf8 dostat český text do databáze(utf8) přes mysql databaze < ./soubor.sql. Soubor se naimportuje ale místo českých znaků jsou různé patvary a obrázkové písmo, pokud nastavím v soubor.sql set names utf8, naimportuje se to tam jako otazníky. Co mám ještě provést, aby se import zdařil?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

20.3.2007 16:45 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Bash: import českých znaků do mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Okrem set names utf8 by som tam ešte pridal set character_set utf8
20.3.2007 16:51 svatekr | skóre: 18 | blog: Svatekr | Teplice
Rozbalit Rozbalit vše Re: Bash: import českých znaků do mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jen se lehce zeptám. Pomocí třeba PhpMyAdmin jde soubor naimportovat tak aby to bylo normálně čitelné?
Každé zbytečně vyřčené slovo je vyřčeno zbytečně.
20.3.2007 17:50 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Bash: import českých znaků do mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jen tak pro jistotu - ukaž, co vypíšou tyhle příkazy:
enca -L czech soubor.sql
mysql -e "show variables like '%character%'"
cat /etc/my.cnf
cat ~/.my.cnf
20.3.2007 17:51 razor | skóre: 33
Rozbalit Rozbalit vše Re: Bash: import českých znaků do mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zdar,
1) zkontrolovat character set u sloupců a tabulky: 
     show create table jmeno_tabulky;
2) zkontrolovat character set u databáze: 
     show create database jmeno_databaze;
Pokud to je v pořádku, tak úložiště je nastavený správně a chyba je při komunikaci se serverem. Možné chyby vidím 2:
1) český text není v utf8
2) vložené set names utf8 je někde dále ve skriptu "přebito".
21.3.2007 00:24 my
Rozbalit Rozbalit vše Re: Bash: import českých znaků do mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Set names nic nepřebije, character set jsem taky nastavoval a beze změny. Provede se asi toto:
./zaloz uzivatel "popis s diakritikou" (vytvori soubor.sql a pak ho naimportuje do mysql)
21.3.2007 07:19 razor | skóre: 33
Rozbalit Rozbalit vše Re: Bash: import českých znaků do mysql
Hele a co teda vypíše: show create database databaze; show create table tabulka; ? Když si na konec toho skriptu dáš: show variables like '%character%';, tak to vypíše co ?
21.3.2007 07:45 razor | skóre: 33
Rozbalit Rozbalit vše Re: Bash: import českých znaků do mysql
A jak vlastně oveřuješ tu diakritku ? Pokud to tak neděláš, zkus to takhle:
1) přepnout kódování terminálu do utf8
2) připojit se k databázi: mysql --default-character-set=utf8 databze
3) select na ty data
21.3.2007 08:54 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Bash: import českých znaků do mysql
A terminál máš v pořádku? Co se stane, když uděláš tohle?
wget -O - -q http://kf.fyz.fce.vutbr.cz/pub/abeceda_utf8
A odpověz nám na všechny dotazy, ať tady nemusíme věštit z křišťálové koule.
svido avatar 21.3.2007 13:25 svido | skóre: 28
Rozbalit Rozbalit vše Re: Bash: import českých znaků do mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jak jednoduche. Staci do sql souboru pridat jeden magicky SQL:
SET NAMES utf8; ;-)
21.3.2007 13:33 razor | skóre: 33
Rozbalit Rozbalit vše Re: Bash: import českých znaků do mysql
No v jeho případě ani nepomohl přidat tento magický SQL. Viz druhá povolovina dotazu :)
svido avatar 21.3.2007 16:50 svido | skóre: 28
Rozbalit Rozbalit vše Re: Bash: import českých znaků do mysql
jj, to jsem prehledl... :'(
21.3.2007 16:46 my
Rozbalit Rozbalit vše Re: Bash: import českých znaků do mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
enca:
Universal transformation format 8 bits; UTF-8
  Doubly-encoded to UTF-8 from KOI-8_CS_2
Variable_name   Value
character_set_client    utf8
character_set_connection        utf8
character_set_database  utf8
character_set_filesystem        binary
character_set_results   utf8
character_set_server    latin1
character_set_system    utf8
character_sets_dir      /usr/share/mysql/charsets/
Database        Create Database
pureftpd        CREATE DATABASE `pureftpd` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_czech_ci */
Table   Create Table
ftpd    CREATE TABLE `ftpd` (\n  `User` varchar(16) NOT NULL default '',\n  `status` enum('0','1') NOT NULL default '0',\n  `Password` varchar(64) NOT NULL default '',\n  `Uid` varchar(11) NOT NULL default '-1',\n  `Gid` varchar(11) NOT NULL default '-1',\n  `Dir` varchar(128) NOT NULL default '',\n  `ULBandwidth` smallint(5) NOT NULL default '0',\n  `DLBandwidth` smallint(5) NOT NULL default '0',\n  `comment` tinytext NOT NULL,\n  `ipaccess` varchar(15) NOT NULL default '*',\n  `QuotaSize` smallint(5) NOT NULL default '0',\n  `QuotaFiles` int(11) NOT NULL default '0',\n  PRIMARY KEY  (`User`),\n  UNIQUE KEY `User` (`User`)\n) ENGINE=MyISAM DEFAULT CHARSET=latin1
Variable_name   Value
character_set_client    utf8
character_set_connection        utf8
character_set_database  utf8
character_set_filesystem        binary
character_set_results   utf8
character_set_server    latin1
character_set_system    utf8
character_sets_dir      /usr/share/mysql/charsets/
Jinak z php aplikace pod apachem jde do databáze krásně česky vkládat.
21.3.2007 17:01 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Bash: import českých znaků do mysql
Tak to vypadá, že soubor, který jsi vytvořil, je dvojitě zakódovaný do utf-8 z KOI-8_CS_2, což musí být neuvěřitelná zmršenina. V terminálu ten soubor vypadá normálně? Needituješ ho něčím špatně nastaveným?
A ještě ukaž obsah těch mysql konfiguráků. Možná se objasní, proč máš character_set_server latin1.
21.3.2007 21:59 razor | skóre: 33
Rozbalit Rozbalit vše Re: Bash: import českých znaků do mysql
Podle mě je blbě to, že ta tabulka ftpd má defaut character set latin1.
21.3.2007 20:44 nop
Rozbalit Rozbalit vše Re: Bash: import českých znaků do mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nepomohlo by neco jako?

iconv -fISO-8859-2 -tUTF8//TRANSLIT sqldump.sql | mysql -uuser -p database
21.3.2007 23:45 my
Rozbalit Rozbalit vše Re: Bash: import českých znaků do mysql
Jo bylo to tím default character set pro tabulku, díky. Taky mě to mohlo trknout.
21.3.2007 23:59 Jiří (BoodOk) Kadeřávek | skóre: 19 | blog: BoodOk | Brno
Rozbalit Rozbalit vše Re: Bash: import českých znaků do mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ty importy je nejlepe delat s --default-character-set=binary, tim vypnes konvertory v mysql. Pokud mas vse v utf-8, je to beż problemu.
Věda má v sobě určitou zpupnost, že čím dokonalejší techniku vyvineme, čím více se dozvíme, tím lepší budou naše životy.

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.