Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để đặt bộ mã cho MySQL trong RODBC?

Tôi không quen với ODBC và RODBC , nhưng việc tôi đọc đoạn mã tài liệu ở trên là SET NAMES 'utf8'; là một phần của phương ngữ SQL của MySQL , vì vậy bạn chạy điều đó như cách bạn làm với bất kỳ câu lệnh SQL nào khác mà bạn có thể sử dụng để truy xuất dữ liệu từ cơ sở dữ liệu của mình.

Một cái gì đó như (không được kiểm tra):

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

ở đâu myChannel là trình xử lý kết nối được trả về bởi odbcConnect() .

Có lý do gì khiến bạn sử dụng RODBC qua gói RMySQL không? Tôi đã có kinh nghiệm tốt khi sử dụng RMySQL để xử lý dữ liệu mở rộng và truy xuất các bộ dữ liệu phức tạp, tất cả đều từ bên trong R.

Cập nhật: một số bằng chứng rằng, ít nhất tại một điểm, SET NAMES đã bị vô hiệu hóa trong trình điều khiển ODBC MySQL. Nếu bạn tự tin, bạn có thể đọc các ký tự thông qua truy cập trực tiếp vào cơ sở dữ liệu (thông qua mysql hoặc một trong các giao diện người dùng GUI của MySQL), sau đó bạn có thể cố gắng sao chép SET NAMES gì làm. Sau đây là từ hướng dẫn sử dụng 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;

Bạn có thể thử thực thi ba câu lệnh SQL đó thay cho SET NAMES và xem cách đó có hiệu quả không.

Sách hướng dẫn tương tự cũng có tài liệu về SET CHARACTER SET , có thể được sử dụng theo cách tương tự như SET NAMES :

SET CHARACTER SET charset_name

SET CHARACTER SET tương tự như SET NAMES nhưng đặt character_set_connectioncollation_connection thành character_set_databasecollation_database . A SET CHARACTER SET x câu lệnh tương đương với ba câu lệnh sau:

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

Đặt collation_connection cũng đặt c haracter_set_connection vào bộ ký tự được liên kết với đối chiếu (tương đương với việc thực thi SET character_set_connection = @@character_set_database ). Không cần thiết phải đặt character_set_connection một cách rõ ràng.

Bạn có thể thử sử dụng SET CHARACTER SET 'utf8' thay vào đó.

Cuối cùng, bạn đang sử dụng bộ ký tự / ngôn ngữ nào? Có vẻ như bạn đang sử dụng windows - đây có phải là ngôn ngữ UTF8 không? Tôi cũng lưu ý một số nhầm lẫn trong phần Q. Bạn nói rằng bạn đã nhập dữ liệu của mình vào MS Access, rồi xuất dữ liệu đó sang ODBC. Ý bạn là bạn đã xuất nó sang MySQL? Tôi mặc dù ODBC là một trình điều khiển kết nối để cho phép giao tiếp với / giữa nhiều loại cơ sở dữ liệu, không phải thứ mà bạn có thể "xuất sang".

Bạn có thực sự là dữ liệu trong MySQL? Bạn có thể không kết nối với MS Access qua RODBC để đọc dữ liệu từ đó không?

Nếu dữ liệu nằm trong MySQL, hãy thử sử dụng gói RMySQL để kết nối với cơ sở dữ liệu và đọc dữ liệu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 4 cách tìm hàng trùng lặp trong MySQL

  2. Độ dài chỉ mục varchar của MySQL

  3. Apache - Dịch vụ MySQL được phát hiện với đường dẫn sai. / Cổng đã được sử dụng

  4. PDO:Không thể tìm thấy trình điều khiển php / mysql

  5. Đặt giá trị mặc định nếu chuỗi trống được chuyển