如何将一个150 kb(千字节)的文本文件加载到sql server 2008中?

时间:2009-10-03 21:57:02

标签: c# sql-server

如何将150 kb文本文件(.aspx,.cs,html等)加载到sql server 2008数据库中。到目前为止,我能够加载所有小于64 kb的文件。我有两个问题;如何绕过64 kb的限制,这是我使用最佳方法的方法?

感谢您的帮助。

  

数据库:

file_length int,
file_path varchar(250),
file_string varchar(MAX)
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));

        SqlParameter contentParameter = new SqlParameter("@file_string", SqlDbType.VarChar, -1);
        contentParameter.Value = content;
        SQL_File_Load.Parameters.Add(contentParameter);

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

        reader.Close();
    }
}

1 个答案:

答案 0 :(得分:2)

通常我会使用BULK INSERT T / SQL命令或BCP命令行实用程序来导入数据。这允许您在一个事务(或一大批记录)中加载所有数据,而不是逐行加载,因为逐行将会非常慢。

您可以通过作为SQL对象一部分的批量插入对象在C#中执行此操作(我没有任何代码示例,但希望有人可以为您发布一个代码示例。)