sql >> Databáze >  >> RDS >> Mysql

Jak nastavit znakovou sadu pro MySQL v RODBC?

Nejsem obeznámen s ODBC a RODBC , ale výše uvedený úryvek dokumentace jsem četl takto:SET NAMES 'utf8'; je součástí dialektu SQL MySQL , takže to spustíte stejně jako jakýkoli jiný příkaz SQL, který byste mohli použít k načtení dat z vaší databáze.

Něco jako (netestováno):

sqlQuery(myChannel, query = "SET NAMES 'utf8';")

kde myChannel je popisovač připojení vrácený odbcConnect() .

Existuje důvod, proč používáte RODBC přes balíček RMySQL? Mám dobré zkušenosti s používáním RMySQL pro rozsáhlé zpracování dat a získávání komplexních sad dat, to vše z R.

Aktualizace: Existuje některé důkaz že, alespoň v jednom bodě, že SET NAMES byla deaktivována v ovladači MySQL ODBC. Pokud jste si jisti, že můžete číst znaky prostřednictvím přímého přístupu do databáze (přes mysql nebo jedno z rozhraní GUI MySQL), pak byste mohli zkusit replikovat to, co SET NAMES dělá. Následující text pochází z příručky MySQL :

A SET NAMES 'x' statement is equivalent to these three statements:

SET character_set_client = x;
SET character_set_results = x;
SET character_set_connection = x;

Můžete zkusit provést tyto tři příkazy SQL namísto SET NAMES a uvidíme, jestli to funguje.

Stejná příručka také dokumentuje SET CHARACTER SET , který lze použít stejným způsobem jako SET NAMES :

SET CHARACTER SET charset_name

SET CHARACTER SET je podobný SET NAMES ale nastaví character_set_connection a collation_connection do character_set_database a collation_database . A SET CHARACTER SET x příkaz je ekvivalentní těmto třem příkazům:

SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;

Nastavení collation_connection také nastavuje character_set_connection na znakovou sadu přidruženou k řazení (ekvivalentní ke spuštění SET character_set_connection = @@character_set_database ). Není nutné nastavovat character_set_connection explicitně.

Můžete zkusit použít SET CHARACTER SET 'utf8' místo toho.

Nakonec, v jaké znakové sadě / národním prostředí používáte? Vypadá to, že používáte Windows - je to národní prostředí UTF8? Všiml jsem si také určitého zmatku ve vaší otázce. Říkáte, že jste importovali svá data do MS Access a poté je exportovali do ODBC. Myslíte, že jste to exportovali do MySQL? Myslel jsem, že ODBC je ovladač připojení, který umožňuje komunikaci s/mezi řadou databází, ne něco, co byste mohli „exportovat“.

Opravdu máte data v MySQL? Nemůžete se připojit k MS Access přes RODBC a číst data odtud?

Pokud jsou data v MySQL, zkuste použít balíček RMySQL pro připojení k databázi a čtení dat.



  1. CHYBA:povolení odepřeno pro sekvenci cities_id_seq pomocí Postgres

  2. Zlepšení řešení mediánu číslování řádků

  3. Existuje způsob, jak použít ARRAY v Entity Framework + PostgreSql

  4. Stránkování pro zobrazení maximální hodnoty a omezení zbytku