使用R从VARBINARY(max)转换为VARCHAR(max)截断的SQL-

时间:2015-10-16 14:38:33

标签: sql-server r varchar truncate varbinary

我需要将varbinary(max)数据类型转换为varchar(max)

这是我使用的陈述:

SELECT file = convert(varchar(max), [colFile]) FROM [myTable]  where key = 1

这会返回截断的文字。

如果我理解正确,那是因为SELECT的输出会截断8000个字符。

我还检查了以下链接,他们解释了这个问题,但我不明白如何将它应用于我的案例。

Convert Binary Id Field to Text

How to store a string var greater than varchar(max)?

那么......我怎么能得到全文?

修改:

我刚刚按照评论中的建议进行了检查,显然文本没有被截断。这只是一个SSMS的事情。因此,问题似乎与运行SQL语句的服务有关。在这种情况下是一个R脚本。

R对来自SQL语句的输出有限制吗?

SqlCommand commandInsert = new SqlCommand();
commandInsert.Connection = con;
//
SqlCommand commandSelect= new SqlCommand();
commandSelect.Connection = con;

string sqlSelect = String.Format("select myfile = convert(varchar(max), {0})  from {1} where {2} = @fileId",
    "FileData", "FileSample", "FileId");
commandSelect.CommandText = sqlSelect;
commandSelect.Parameters.Add(new SqlParameter("@fileId", 1));
var result = commandSelect.ExecuteReader();

if(result.HasRows)
{
    StringBuilder builder = new StringBuilder();
    while(result.Read())
    {
        builder.Append(result.GetString(0));
    }
    string output = @"./Data/Result.csv";
    File.WriteAllText(output, builder.ToString());
}

//
con.Close();

R代码

> install.packages("RODBC")
> library("RODBC")
> odbcChannel <- odbcConnect("TestDB")
> sqlFetch(odbcChannel, "FileSample")
Error in odbcQuery(channel, query, rows_at_time) : 
'Calloc' could not allocate memory (214748364800 of 1 bytes)
Además: Warning messages:
1: In odbcQuery(channel, query, rows_at_time) :
Reached total allocation of 8075Mb: see help(memory.size)
2: In odbcQuery(channel, query, rows_at_time) :
Reached total allocation of 8075Mb: see help(memory.size)
> dataFrame <- sqlQuery(odbcChannel, "select myfile = convert(varchar(max), FileData)  from FileSample where FileId = 1")
> write.csv(dataFrame, file = "MyData.csv")

好吧,我读了一些关于R的内容(我没有涉及项目的那一部分,但问题是我想提供所有代码......)

这是一个非常基本的示例代码,其中使用RODBC库从SQL-Server获取数据,输出文件由先前已知的SQL语句生成。

该文件被截断。

  

它应该有1000行(144183个字符)。它只抛出442(64233个字符)

文件: in pastebin

0 个答案:

没有答案