Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да задам набор от символи за MySQL в RODBC?

Не съм запознат с ODBC и RODBC , но моят прочит на горния фрагмент от документация е, че SET NAMES 'utf8'; е част от SQL диалект на MySQL , така че изпълнявате това, както бихте направили всеки друг SQL израз, който може да използвате за извличане на данни от вашата база данни.

Нещо като (не е тестван):

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

където myChannel е манипулаторът на връзката, върнат от odbcConnect() .

Има ли причина да използвате RODBC над пакета RMySQL? Имах добър опит с използването на RMySQL за обширна обработка на данни и извличане на сложни набори от данни, всичко това от R.

Актуализация: Има някои доказателства че поне в един момент този SET NAMES е деактивиран в MySQL ODBC драйвера. Ако сте уверени, можете да прочетете знаците чрез директен достъп до базата данни (чрез mysql или един от предните части на GUI на MySQL), тогава можете да опитате да репликирате това, което 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;

Можете да опитате да изпълните тези три SQL оператора вместо SET NAMES и вижте дали това работи.

Същото ръководство документира и 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 . A SET CHARACTER SET x оператор е еквивалентен на тези три изявления:

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

Настройка на collation_connection също така задава character_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? Не можете ли да се свържете с MS Access чрез RODBC, за да прочетете данните от там?

Ако данните са в MySQL, опитайте да използвате пакета RMySQL, за да се свържете с базата данни и да прочетете данните.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате етикета goto в съхранената функция на MySQL

  2. Може ли кодиран в base64 низ да съдържа празно пространство?

  3. Възможни върнати стойности за mysql_affected_rows()

  4. Как да проверя дали MySQL връзка е отворена в Python?

  5. Реално max_execution_time за PHP на linux