Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara mengatur charset untuk MySQL di RODBC?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa susunan MySQL terbaik untuk bahasa Jerman?

  2. Memasukkan SEKARANG() ke dalam Database dengan Rekaman Aktif CodeIgniter

  3. MySQL menyisipkan baris pada kunci duplikat memperbarui beberapa kolom

  4. Jenis pengindeksan terbaik ketika ada klausa LIKE

  5. MySQL InnoDB tidak melepaskan ruang disk setelah menghapus baris data dari tabel