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: Có 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_connection
và collation_connection
thành character_set_database
và collation_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.