RMySQL в Linux (но не в OSX или Windows) дает мусорные данные

У нас есть программа R, которая фильтрует некоторые данные в таблице и создает новую таблицу с результатами. В Windows и OSX программа запускается, и наша таблица создается правильно. Однако на нашем сервере Linux (Ubuntu 12.04) та же программа R создает таблицу с мусорными данными.

Когда мы сравниваем мусорные данные, созданные в Linux, с правильными данными, мы обнаруживаем, что:

  • На первый взгляд произвольные числа в столбцах, которые должны иметь текстовые значения
  • Дополнительные строки

Мы думаем, что проблема связана с кодировкой, но все наши попытки изменить кодировку базы данных пока не увенчались успехом.

Наш сценарий R использует RMySQL для подключения к базе данных MySQL, фильтрации содержимого и записи его в новую таблицу (используя команды dbReadTable и dbWriteTable). Мы знаем, что сами команды не являются проблемой, так как мы можем изучить data.frame до и после их фильтрации — проблема с dbWriteTable.

Эти две ссылки кажутся наиболее близкими к решению нашей проблемы, но нам нужно дождаться прохождения запроса на включение:

  1. https://github.com/jeffreyhorner/RMySQL/issues/6
  2. https://github.com/gagern/RMySQL/commit/b0fbef105ca61d69992a2ec5a5eafde30530b8d5

И это тоже актуально:

  1. http://zee.balogh.sk/?p=928
  2. Что именно означает набор символов и сопоставление?

person TeePaps    schedule 09.05.2014    source источник
comment
без образца ваших данных (и, возможно, кода) довольно сложно...   -  person Luca Braglia    schedule 10.05.2014


Ответы (1)


Исходя из прошлого опыта, я предполагаю, что это не проблема в dbWriteTable; и это даже не проблема кодирования!

Вполне вероятно, что у вас есть stringsAsFactors = T при записи data.frame, и эти числа являются номерами факторов.

person JayCo    schedule 10.05.2014