Ich bin mit ODBC und RODBC
nicht vertraut , aber ich habe den obigen Dokumentationsausschnitt so gelesen, dass SET NAMES 'utf8';
ist Teil des SQL-Dialekts
von MySQL , also führen Sie das wie jede andere SQL-Anweisung aus, die Sie verwenden könnten, um Daten aus Ihrer Datenbank abzurufen.
Etwas wie (nicht getestet):
sqlQuery(myChannel, query = "SET NAMES 'utf8';")
wobei myChannel
ist das von odbcConnect()
zurückgegebene Verbindungs-Handle .
Gibt es einen Grund, warum Sie RODBC über das RMySQL-Paket verwenden? Ich habe gute Erfahrungen mit der Verwendung von RMySQL für die umfangreiche Datenverarbeitung und den Abruf komplexer Datensätze innerhalb von R gemacht.
Aktualisierung: Es gibt einige Beweise
dass, zumindest an einem Punkt, dass SET NAMES
wurde im MySQL-ODBC-Treiber deaktiviert. Wenn Sie sich sicher sind, können Sie die Zeichen über einen direkten Zugriff auf die Datenbank (über mysql
) lesen oder eines der GUI-Frontends von MySQL), dann könnten Sie versuchen, SET NAMES
zu replizieren tut. Das Folgende stammt aus dem MySQL-Handbuch
:
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;
Sie könnten versuchen, diese drei SQL-Anweisungen anstelle von SET NAMES
auszuführen und sehen, ob das funktioniert.
Dasselbe Handbuch dokumentiert auch SET CHARACTER SET
, die genauso verwendet werden können wie SET NAMES
:
SET CHARACTER SET charset_name
SET CHARACTER SET
ähnelt SET NAMES
setzt aber character_set_connection
und collation_connection
zu character_set_database
und collation_database
. Ein SET CHARACTER SET x
-Anweisung entspricht diesen drei Anweisungen:
SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;
Einstellen von collation_connection
setzt auch character_set_connection
auf den mit der Sortierung verknüpften Zeichensatz (entspricht der Ausführung von SET character_set_connection = @@character_set_database
). character_set_connection
muss nicht gesetzt werden explizit.
Sie könnten versuchen, SET CHARACTER SET 'utf8'
zu verwenden stattdessen.
Schließlich, in welchem Zeichensatz / Gebietsschema laufen Sie? Es sieht so aus, als ob Sie Windows verwenden - ist dies ein UTF8-Gebietsschema? Ich stelle auch einige Verwirrung in Ihrer Frage fest. Sie sagen, Sie haben Ihre Daten in MS Access importiert und dann nach ODBC exportiert. Meinst du, du hast es nach MySQL exportiert? Ich dachte, ODBC sei ein Verbindungstreiber, um die Kommunikation mit/zwischen einer Reihe von Datenbanken zu ermöglichen, nicht etwas, in das man "exportieren" könne.
Sind Ihre Daten wirklich in MySQL? Konnten Sie sich nicht über RODBC mit MS Access verbinden, um die Daten von dort zu lesen?
Wenn sich die Daten in MySQL befinden, versuchen Sie, das RMySQL-Paket zu verwenden, um eine Verbindung zur Datenbank herzustellen und die Daten zu lesen.