C# 读取 sql server 大型字段(单个字段大小超过10G)

如果电脑内存够大,并且只为这一个程序服务,当然这不是问题,可大多数场景并非如此。

var file = @"a.zip";
using (var conn = new SqlConnection("Data Source=.;Integrated Security=SSPI;Initial Catalog=ABC"))
{
    conn.Open();
    var sql = "SELECT TOP 1 BulkColumn FROM OPENROWSET(BULK '" + file + "', SINGLE_BLOB) f";
    using (var cmd = new SqlCommand(sql, conn))
    {
        cmd.CommandTimeout = 0;
        using (var dr = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
        {
                        
            int bufferSize = 100;
            byte[] buffer = new byte[bufferSize];
            int readBytes = 0;
            long index = 0;

            using (FileStream fs = new FileStream(@"b.zip", FileMode.Create, FileAccess.Write, FileShare.None))
            {
                while (dr.Read())
                {
                    while ((readBytes = (int)dr.GetBytes(0, index, buffer, 0, bufferSize)) > 0)
                    {
                        fs.Write(buffer, 0, readBytes);
                        index += readBytes;
                    }
                }
            }
        }
    }
}

 

上一篇:win安装oracle 10g时发生“程序异常终止。发生内部错误”的提示


下一篇:【校园卡】2020校园卡最近消息,电信联通默认都增加10G全国流量