RODBC:列和值不匹配

时间:2018-05-29 21:01:08

标签: sql r sql-server rodbc

我在RODBC中遇到过这种行为(使用SQL Server驱动程序):

df1 = data.frame(matrix(c(1:20), nrow=10))
df1

输出

   X1 X2
1   1 11
2   2 12
3   3 13
4   4 14
5   5 15
6   6 16
7   7 17
8   8 18
9   9 19
10 10 20

这是有道理的。然后我使用RODBC

保存表格
sqlSave(conout, df1, 'TEST')

然后我切换两个创建的列:

df2 = df1[,c(2,1)]
df2

输出

   X2 X1
1  11  1
2  12  2
3  13  3
4  14  4
5  15  5
6  16  6
7  17  7
8  18  8
9  19  9
10 20 10

这也是有道理的。

看到这两个表,我看到X1只包含1:10而X2只包含11:20。现在,当我做的时候

sqlSave(conout, df2, 'TEST', append=TRUE, fast=FALSE)
sqlQuery(conout, 'SELECT * FROM TEST')

   rownames X1 X2
1         1  1 11
2         2  2 12
3         3  3 13
4         4  4 14
5         5  5 15
6         6  6 16
7         7  7 17
8         8  8 18
9         9  9 19
10       10 10 20
11        1 11  1
12        2 12  2
13        3 13  3
14        4 14  4
15        5 15  5
16        6 16  6
17        7 17  7
18        8 18  8
19        9 19  9
20       10 20 10

这绝对不是我保存的。现在有三个问题:

  1. 这怎么可能?
  2. RODBC手册中解释了这种行为在哪里?
  3. 如何在不重新排序列的情况下阻止此行为(此示例背后的真实案例有> 300列)。

0 个答案:

没有答案