如何加载超过64 KB的缓冲区大小限制更大的文本文件? [英] How do I load text files greater than the 64 kb buffersize limit?

查看:140
本文介绍了如何加载超过64 KB的缓冲区大小限制更大的文本文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想文本文件(的.aspx,的.cs,HTML等)加载到SQL Server 2008数据库。
我能够加载是小于64 KB至今的所有文件。我有两个问题;我该如何解决64KB的限制,是我用最好的方式做到这一点的方法?

感谢您的帮助。

数据库:

  file_length INT,
FILE_PATH VARCHAR(250)
file_string VARCHAR(MAX)

code:

 私有静态无效Load_Files()
{
    字符串源= HttpContext.Current.Server.MapPath(〜/网站/);    DirectoryInfo的DI =新DirectoryInfo的(源);
    的FileInfo [] =文件di.GetFiles();    的foreach(在文件的FileInfo F)
    {
        字符串的资源文件= f.FullName;        的FileStream fs_reader =新的FileStream(的资源文件,FileMode.Open,FileAccess.Read);
        StreamReader的读者=新的StreamReader(fs_reader);
        字符串内容= reader.ReadToEnd();        INT32 file_length = content.Length;        字符串CS = ConfigurationManager.ConnectionStrings [SQL_CS]的ConnectionString。
        SqlConnection的SQL_Conn_01 =新的SqlConnection(CS);        字符串SQL_01 =INSERT INTO Page_File_Store(file_length,FILE_PATH,file_string)VALUES(@file_length,@file_path,@file_string);
        的SqlCommand SQL_File_Load =新的SqlCommand(SQL_01,SQL_Conn_01);
        SQL_File_Load.Parameters.Add(新的SqlParameter(@ file_length,file_length));
        SQL_File_Load.Parameters.Add(新的SqlParameter(@ FILE_PATH的资源文件));
        SQL_File_Load.Parameters.Add(新的SqlParameter(@ file_string,内容));        SQL_Conn_01.Open();
        SQL_File_Load.ExecuteNonQuery();
        SQL_Conn_01.Close();        reader.Close();
    }
}


解决方案

在SQL 2008服务器,微软增加了一个新的数据类型,一种称作FILESTREAM。它通过存储的varbinary(最大)的二进制大对象(BLOB)数据作为文件系统中的文件集成了NTFS文件系统的SQL Server数据库引擎。你可以阅读更多有关的FileStream 这里

I'm trying to load text files (.aspx, .cs, html, etc) into a sql server 2008 database. I'm able to load all files that are less than 64 kb so far. I have two questions; How do I get around the 64 kb limit, and is the method I'm using the best way to do this?

Thanks for the help.

Database:

file_length int,
file_path varchar(250),
file_string varchar(MAX)

Code:

private static void Load_Files()
{
    string source = HttpContext.Current.Server.MapPath("~/website/");

    DirectoryInfo di = new DirectoryInfo(source);
    FileInfo[] files = di.GetFiles();

    foreach (FileInfo f in files)
    {
        string sourceFile = f.FullName;

        FileStream fs_reader = new FileStream(sourceFile, FileMode.Open, FileAccess.Read);
        StreamReader reader = new StreamReader(fs_reader);
        string content = reader.ReadToEnd();

        Int32 file_length = content.Length;

        string CS = ConfigurationManager.ConnectionStrings["SQL_CS"].ConnectionString;
        SqlConnection SQL_Conn_01 = new SqlConnection(CS);

        string SQL_01 = "INSERT INTO Page_File_Store (file_length, file_path, file_string) VALUES (@file_length, @file_path, @file_string)";
        SqlCommand SQL_File_Load = new SqlCommand(SQL_01, SQL_Conn_01);
        SQL_File_Load.Parameters.Add(new SqlParameter("@file_length", file_length));
        SQL_File_Load.Parameters.Add(new SqlParameter("@file_path", sourceFile));
        SQL_File_Load.Parameters.Add(new SqlParameter("@file_string", content));

        SQL_Conn_01.Open();
        SQL_File_Load.ExecuteNonQuery();
        SQL_Conn_01.Close();

        reader.Close();
    }
}

解决方案

In SQL server 2008, Microsoft added a new data type, called FileStream. It "integrates the SQL Server Database Engine with an NTFS file system by storing varbinary(max) binary large object (BLOB) data as files on the file system". You can read more about FileStream here.

这篇关于如何加载超过64 KB的缓冲区大小限制更大的文本文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆