ODBCとRODBC
に精通していません 、しかし、上記のドキュメントのスニペットを読んだところ、SET NAMES 'utf8';
MySQLの
(テストされていない)のようなもの:
sqlQuery(myChannel, query = "SET NAMES 'utf8';")
ここで、myChannel
odbcConnect()
によって返される接続ハンドルです 。
RMySQLパッケージではなくRODBCを使用している理由はありますか?私は、RMySQLを使用して、R内からすべての複雑なデータセットを広範囲にデータ処理および取得した経験があります。
更新: いくつか 証拠
つまり、少なくとも1つの時点で、そのSET NAMES
MySQLODBCドライバーで非アクティブ化されました。自信がある場合は、データベースに直接アクセスして(mysql
経由で)文字を読み取ることができます。 またはMySQLのGUIフロントエンドの1つ)、SET NAMES
を複製してみてください。 します。以下は、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;
SET NAMES
の代わりにこれらの3つのSQLステートメントを実行してみることができます それが機能するかどうかを確認します。
同じマニュアルには、SET CHARACTER SET
も記載されています。 、SET NAMES
と同じように使用できます :
SET CHARACTER SET charset_name
SET CHARACTER SET
SET NAMES
に似ています ただし、character_set_connection
を設定します およびcollation_connection
character_set_database
へ およびcollation_database
。 SET CHARACTER SET x
ステートメントは、次の3つのステートメントと同等です。
SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;
collation_connection
を設定する また、c haracter_set_connection
を設定します 照合に関連付けられた文字セットに(SET character_set_connection = @@character_set_database
を実行するのと同じです )。 character_set_connection
を設定する必要はありません 明示的に。
SET CHARACTER SET 'utf8'
を使用してみてください 代わりに。
最後に、どの文字セット/ロケールで実行していますか? Windowsを使用しているようです-これはUTF8ロケールですか?また、Qで混乱が生じていることにも注意してください。データをMS Accessにインポートしてから、ODBCにエクスポートしたとのことです。 MySQLにエクスポートしたということですか? ODBCは、さまざまなデータベースとの通信を可能にする接続ドライバーであり、「エクスポート先」にできるものではありませんでした。
あなたは本当にMySQLのデータですか? RODBC経由でMSAccessに接続して、そこからデータを読み取ることができませんでしたか?
データがMySQLにある場合は、RMySQLパッケージを使用してデータベースに接続し、データを読み取ってみてください。