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.