我有一些数据试图上传到数据库中的表中。例如:
df <- data.frame(name = c("Fred", "George", "David"), data = c(10, 100, 1000))
但是,当我使用
RODBC::sqlSave
函数(使用 fast = FALSE
一次插入一行)时,它会用空格填充数字或整数值。所以在数据库中, data
列下的条目将是 " 10", " 100", "1000"
。例如,如果我要上传上述数据框,然后使用以下命令查询该数据tmp = RODBC::sqlQuery(ch, query = "SELECT * FROM My_Tbl")
然后输出将如下所示:
> str(tmp)
'data.frame': 3 obs. of 2 variables:
$ name : chr "Fred" "George" "David"
$ data : chr " 10" " 100" "1000"
data
列的数据库数据类型为 varchar(10)
类型,因为数据有时具有前导字母。然而,在我与之合作的情况下,只涉及数字。我的问题是为什么
sqlSave
函数会填充数字数据,我能做些什么来阻止它这样做?注意:我知道是
sqlSave
函数导致了这个问题,因为当我使用 verbose = TRUE
时,我可以看到 INSERT
语句的输出,并且确实有填充数据。此外,出于示例的目的,这是由数据组成的。 最佳答案
在 sqlSave 的帮助下:
所以在没有 fast=FALSE
选项的情况下尝试它。您也可以尝试 typeInfo
选项。
关于r - sqlSave 用空格填充数字/整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31832432/