Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak ustawić zestaw znaków dla MySQL w RODBC?

Nie znam ODBC i RODBC , ale mój odczyt z powyższego fragmentu dokumentacji jest taki, że SET NAMES 'utf8'; jest częścią dialektu SQL , więc uruchamiasz to tak samo, jak każdą inną instrukcję SQL, której możesz użyć do pobrania danych z bazy danych.

Coś takiego (nie testowane):

sqlQuery(myChannel, query = "SET NAMES 'utf8';")

gdzie myChannel jest uchwytem połączenia zwracanym przez odbcConnect() .

Czy istnieje powód, dla którego używasz RODBC zamiast pakietu RMySQL? Mam dobre doświadczenie w używaniu RMySQL do rozległego przetwarzania danych i pobierania złożonych zestawów danych z poziomu R.

Aktualizacja: Istnieje niektóre dowody że przynajmniej w jednym momencie SET NAMES został dezaktywowany w sterowniku MySQL ODBC. Jeśli jesteś pewien, że możesz odczytać znaki poprzez bezpośredni dostęp do bazy danych (poprzez mysql lub jeden z interfejsów graficznych MySQL), możesz spróbować zreplikować to, co SET NAMES robi. Poniżej znajduje się podręcznik 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;

Możesz spróbować wykonać te trzy instrukcje SQL zamiast SET NAMES i zobacz, czy to działa.

Ta sama instrukcja dokumentuje również SET CHARACTER SET , którego można używać w taki sam sposób jak SET NAMES :

SET CHARACTER SET charset_name

SET CHARACTER SET jest podobny do SET NAMES ale ustawia character_set_connection i collation_connection do character_set_database i collation_database . A SET CHARACTER SET x oświadczenie jest równoważne tym trzem stwierdzeniom:

SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;

Ustawianie collation_connection ustawia również character_set_connection do zestawu znaków skojarzonego z sortowaniem (odpowiednik wykonania SET character_set_connection = @@character_set_database ). Nie jest konieczne ustawianie character_set_connection wyraźnie.

Możesz spróbować użyć SET CHARACTER SET 'utf8' zamiast tego.

Wreszcie, w jakim zestawie znaków/lokalizacji używasz? Wygląda na to, że korzystasz z systemu Windows — czy to jest lokalizacja UTF8? Zauważam również pewne zamieszanie w twoim pytaniu. Mówisz, że zaimportowałeś swoje dane do MS Access, a następnie wyeksportowałeś je do ODBC. Czy to znaczy, że wyeksportowałeś go do MySQL? Myślałem, że ODBC był sterownikiem połączenia umożliwiającym komunikację z/pomiędzy różnymi bazami danych, a nie czymś, do czego można by „eksportować”.

Czy naprawdę masz dane w MySQL? Nie możesz połączyć się z MS Access przez RODBC, aby odczytać stamtąd dane?

Jeśli dane znajdują się w MySQL, spróbuj użyć pakietu RMySQL, aby połączyć się z bazą danych i odczytać dane.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę sprawdzić typ silnika MySQL dla określonej tabeli?

  2. Importuj dane szesnastkowe/binarne do mysql

  3. Czy w MySQL jest rozróżniana wielkość liter w nazwach kolumn i tabel?

  4. mysql wybierz znaczniki czasu między a i b zwracając wszystkie lub 0 znaczników czasu

  5. Left Join nie zwraca wszystkich wierszy