Saya tidak akrab dengan ODBC dan RODBC
, tetapi pembacaan saya atas cuplikan dokumentasi di atas adalah bahwa SET NAMES 'utf8';
adalah bagian dari dialek SQL
MySQL , jadi Anda menjalankannya seperti yang Anda lakukan pada pernyataan SQL lainnya yang mungkin Anda gunakan untuk mengambil data dari basis data Anda.
Sesuatu seperti (tidak diuji):
sqlQuery(myChannel, query = "SET NAMES 'utf8';")
di mana myChannel
adalah pegangan koneksi yang dikembalikan oleh odbcConnect()
.
Apakah ada alasan Anda menggunakan RODBC di atas paket RMySQL? Saya memiliki pengalaman yang baik menggunakan RMySQL untuk pemrosesan data ekstensif dan pengambilan kumpulan data yang kompleks, semuanya dari dalam R.
Pembaruan: Ada beberapa bukti
bahwa, setidaknya pada satu titik, SET NAMES
telah dinonaktifkan di driver ODBC MySQL. Jika Anda yakin Anda dapat membaca karakter melalui akses langsung ke database (melalui mysql
atau salah satu ujung depan GUI MySQL), maka Anda dapat mencoba meniru SET NAMES
melakukan. Berikut ini dari manual 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;
Anda dapat mencoba menjalankan ketiga pernyataan SQL tersebut sebagai ganti SET NAMES
dan lihat apakah itu berhasil.
Manual yang sama juga mendokumentasikan SET CHARACTER SET
, yang dapat digunakan dengan cara yang sama seperti SET NAMES
:
SET CHARACTER SET charset_name
SET CHARACTER SET
mirip dengan SET NAMES
tetapi set character_set_connection
dan collation_connection
ke character_set_database
dan collation_database
. SET CHARACTER SET x
pernyataan setara dengan tiga pernyataan ini:
SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;
Menyetel collation_connection
juga menyetel character_set_connection
ke set karakter yang terkait dengan pemeriksaan (setara dengan menjalankan SET character_set_connection = @@character_set_database
). Tidak perlu menyetel character_set_connection
secara eksplisit.
Anda dapat mencoba menggunakan SET CHARACTER SET 'utf8'
sebagai gantinya.
Terakhir, set karakter/lokal apa yang Anda jalankan? Sepertinya Anda menggunakan windows - apakah ini lokal UTF8? Saya juga mencatat beberapa kebingungan di Q Anda. Anda mengatakan Anda telah mengimpor data Anda ke MS Access, dan kemudian mengekspornya ke ODBC. Apakah maksud Anda Anda mengekspornya ke MySQL? Saya pikir ODBC adalah driver koneksi untuk memungkinkan komunikasi dengan/antara berbagai basis data, bukan sesuatu yang dapat Anda "ekspor ke".
Apakah data Anda benar-benar ada di MySQL? Bisakah Anda tidak terhubung ke MS Access melalui RODBC untuk membaca data dari sana?
Jika data ada di MySQL, coba gunakan paket RMySQL untuk terhubung ke database dan baca datanya.