У меня есть база данных, размещенная с использованием 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)
)
)