使用sqlSave()将数据框从R导入SQL服务器,但是列被截断为255个字节?

时间:2017-09-23 15:15:49

标签: sql r import

我有一个多列超过255个字符的数据框,当我尝试使用下面的代码将数据框导入sql server时,多列被截断为255个字符。

myconn <- odbcDriverConnect("db_name")
sqlSave(myconn, my_data, tablename = "Table_1" ,rownames=FALSE, append = TRUE)

我尝试但没有效果的事情

我尝试在从R导入数据之前在sql中创建表但是没有工作:

    CREATE TABLE TEST_Table 
(
      [Column_1] nvarchar(max),
      [Column_2] nvarchar(max),
      [Column_3] nvarchar(max)
);

我还尝试在导入数据之前指定varTypes,如下所示:

columnTypes <- list(Column_1 = "nvarchar(max)", Column_2 = "nvarchar(max)", Column_3 = "nvarchar(max)")
sqlSave(myconn, my_data, tablename = "Table_1" ,rownames=FALSE, append = TRUE, varTypes=columnTypes)

如何在不截断字符串的情况下将此数据帧作为表写入数据库还能做些什么?

2 个答案:

答案 0 :(得分:1)

另一种解决方案是

where (row,col) in ((1,2),(3,4))

答案 1 :(得分:0)

我将数据从R推送到SQL的唯一成功是使用巨大的sql字符串构造巨大的INSERT语句。所以,假设我的数据库已经Table_1,我想插入一个简单的数据框df,如

Column_1  Column_2  Column_3
--------------------------------
Fred      Wilma     Pebbles
Barney    Betty     Bambam

然后我在R中构建一个sql字符串

sql = "INSERT Table_1 (Column_1, Column_2, Column_3)
       VALUES ('Fred', 'Wilma', 'Pebbles'), ('Barney', 'Betty', 'Bambam')"

并在RODBC连接上运行它。