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;
                    }
                }
            }
        }
    }
}

 

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

上一篇:linux下删除oracle的脚本


下一篇:【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 三 )(一)