我有一个使用Microsoft SQL Server托管的数据库。它的表project
包含列project_id
(int identity
),project_code
(nvarchar not null
)和api_form
(nvarchar
)。我已使用R中的DBI
程序包连接到此程序,并运行了以下代码。
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
我不确定为什么现在的字符是整数。有没有一种方法可以将字符数据直接添加到表中,或者,如果这是预期的行为,如何查询表以查找输入的实际文本?
data.frame()
调用的经典忽略,默认情况下将字符串转换为因子。您的project_code
呈现为因子(即带有标签值的数字列)而非字符。要解决此问题,只需传递stringsAsFactors=FALSE
,以便将实际字符值附加到数据库表中:
dbAppendTable(conn, 'project',
data.frame(
project_code = c("ABC123", "DEF456"),
api_form = c(NA, NA),
stringsAsFactors=FALSE
)
)
或者,将R会话中所有data.frame()
调用的参数设置为全局选项:
options(stringsAsFactors = FALSE)
dbAppendTable(conn, 'project',
data.frame(
project_code = c("ABC123", "DEF456"),
api_form = c(NA, NA)
)
)