Символьные столбцы преобразуются в числовые при добавлении в базу данных SQL Server с пакетом DBI в R

У меня есть база данных, размещенная с использованием Microsoft SQL Server. Он имеет табличный 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 ответ


Классическое игнорирование data.frame() который по умолчанию data.frame() строки как факторы. Ваш project_code отображается как фактор (то есть числовые столбцы со значениями меток), а не как символы. Для разрешения просто передайте 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) 
              )
)

Есть идеи?

10000