Как загрузить текстовые файлы размером 150 КБ (килобайт) в SQL Server 2008? - PullRequest
0 голосов
/ 04 октября 2009

Как загрузить текстовые файлы размером 150 КБ (.aspx, .cs, html и т. Д.) В базу данных sql server 2008. Я могу загрузить все файлы размером менее 64 КБ. У меня два вопроса; Как мне обойти ограничение в 64 Кб, и какой метод я использую, лучший способ сделать это?

Спасибо за помощь.

База данных:

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 Ответ

2 голосов
/ 04 октября 2009

Обычно я бы использовал команду BULK INSERT T / SQL или утилиту командной строки BCP для импорта данных. Это позволяет загружать все данные в одной транзакции (или в большом количестве записей) вместо строки за строкой, поскольку строка за строкой будет очень медленной.

Вы можете сделать это в C # с помощью объекта массовой вставки, который является частью объектов SQL (у меня нет удобных примеров кода, но, надеюсь, кто-то может опубликовать его для вас).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...