sqlSave用空格填充数字/整数

时间:2015-08-05 12:23:34

标签: r rodbc

我有一些数据,我试图上传到数据库中的表。例如:

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语句的输出,并且确实有填充数据。此外,出于示例的目的,这是由数据组成的。

1 个答案:

答案 0 :(得分:1)

在sqlSave的帮助下:

  

如果fast = FALSE,则所有数据都作为字符串发送。如果快=   TRUE,整数和双向量作为类型SQL_C_SLONG和发送   分别是SQL_C_DOUBLE。

所以在没有fast=FALSE选项的情况下尝试一下。您也可以尝试typeInfo选项。