Символьные столбцы преобразуются в цифры c при добавлении к SQL База данных сервера с пакетом DBI в R - PullRequest
1 голос
/ 16 января 2020

У меня есть база данных, размещенная на сервере Microsoft SQL. Он имеет таблицу project со столбцами project_id (int identity), project_code (nvarchar not null) и api_form (nvarchar). Я подключился к этому с помощью пакета DBI в R и запустил следующий код.

dbAppendTable(conn, 'project', data.frame(
  project_code = c("ABC123", "DEF456"),
  api_form = c(NA, NA)
))

Однако, когда я запрашиваю всю таблицу, я получаю следующий вывод.

project_id  project_code    api_form
1   1   NULL
2   2   NULL

Я не уверен, почему символы теперь являются целыми числами. Есть ли способ добавить символьные данные непосредственно в таблицу или, если это ожидаемое поведение, как запросить таблицу, чтобы найти фактически введенный текст?

1 Ответ

2 голосов
/ 16 января 2020

Classi c игнорирует вызов data.frame(), который по умолчанию выводит строки как факторы. Ваш project_code отображается как фактор (т. Е. Столбцы цифры c со значениями меток), а не как символы. Чтобы разрешить, просто передайте stringsAsFactors=FALSE, чтобы фактические значения символов добавлялись в таблицу базы данных:

dbAppendTable(conn, 'project', 
              data.frame(
                 project_code = c("ABC123", "DEF456"),
                 api_form = c(NA, NA),
                 stringsAsFactors=FALSE 
              )
)

В качестве альтернативы, установите аргумент в качестве глобального параметра для всех вызовов data.frame() в сеансе R:

options(stringsAsFactors = FALSE)

dbAppendTable(conn, 'project', 
              data.frame(
                 project_code = c("ABC123", "DEF456"),
                 api_form = c(NA, NA) 
              )
)
...