Вставьте данные таблицы C# в таблицу SQL Server

Должен там так или иначе вставить оптом Систему. Данные. DataTable в C# в таблицу SQL Server с помощью процедуры хранилища и передавая эту таблицу как параметр?

Таблица не будет иметь постоянного числа записей.

7
задан Brian Tompsett - 汤莱恩 6 December 2016 в 20:09
поделиться

2 ответа

Да, есть способ:

        DataTable dataTable = null; // your data needs to be here
        try
        {
            ConnectionStringSettings mConString = ConfigurationManager.ConnectionStrings["SiteSqlServer"];

            // Optional truncating old table
            using (SqlConnection connection = new SqlConnection(mConString.ConnectionString))
            {
                connection.Open();
                // Delete old entries
                SqlCommand truncate = new SqlCommand("TRUNCATE TABLE MYTABLE", connection);
                truncate.ExecuteNonQuery();
            }

            SqlBulkCopy bulkCopy = new SqlBulkCopy(mConString.ConnectionString, SqlBulkCopyOptions.TableLock)
                                          {
                                              DestinationTableName = "dbo.MYTABLE",
                                              BatchSize = 100000,
                                              BulkCopyTimeout = 360
                                          };
            bulkCopy.WriteToServer(dataTable);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }

Поэкспериментируйте с BatchSize - 100000 мне подошло - он не должен быть больше - иначе скорость миграции уменьшится. BatchSize не ограничивает ваши данные - это просто размер каждого «пакета», который будет отправлен на сервер sql.

SiteSQLServer должен находиться внутри вашего app.config или web.config. Если нет, вам нужно изменить здесь параметры.

Пожалуйста, измените MYTABLE на имя вашей таблицы.

7
ответ дан 7 December 2019 в 03:09
поделиться

В версиях SQL Server до 2008 года единственным способом передать всю таблицу DataTable в SQL Server был SqlBulkCopy . Вы должны поместить все данные в (возможно, временную) промежуточную таблицу и вызвать процедуру для обработки промежуточных данных.

В SQL Server 2008 были введены возвращающие табличное значение определяемые пользователем типы. Они предоставляют несколько отличных новых возможностей для работы с наборами данных.

Взгляните на MSDN:

и, вероятно, второй в двух моих сообщениях в блоге:

2
ответ дан 7 December 2019 в 03:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: