Массовая вставка вопросов - PullRequest
3 голосов
/ 19 марта 2009

У меня есть файл CSV на стороне клиента, и я хочу разработать приложение на C # для массовой вставки данных в таблицу базы данных для минимального вывода журнала. Я не понимаю, использую ли я ADO.NET на стороне клиента для вызова хранимых процедур на сервере базы данных. Какой код должен разрабатываться на стороне клиента, а какой код должен реализовываться на стороне сервера в виде хранимых процедур?

Но я не нашел образцов от Google. Какие есть готовые образцы? : -)

РЕДАКТИРОВАТЬ: Дополнительная информация:

У меня много данных на стороне клиента, и я хочу импортировать их в базу данных, но мне не нужны служебные данные для всех многих журналов транзакций. Из соображений безопасности я хочу разработать хранимую процедуру на стороне сервера и вызывать ее на стороне клиента (ADO.NET). Я хочу знать, чтобы достичь такой цели. Какой тип T-SQL необходимо разработать в хранимых процедурах на стороне сервера и как эффективно вызывать / заполнять данные на стороне клиента?

Если что-то все еще неясно, пожалуйста, дайте мне знать.

Ответы [ 2 ]

8 голосов
/ 19 марта 2009

Вы можете подключить CsvReader к SqlBulkCopy, который очень хорошо выполняет свою работу ... что-то вроде (не проверено):

using (CsvReader reader = new CsvReader(path))
using (SqlBulkCopy bcp = new SqlBulkCopy(CONNECTION_STRING))
{
    bcp.DestinationTableName = "SomeTable";
    bcp.WriteToServer(reader);
}

edit вы обычно выполняете массовую вставку в таблицу staging , а затем используете обычную хранимую процедуру для перемещения данных в таблицу real .

1 голос
/ 19 марта 2009

Используете ли вы SQL Server 2008? И вы в состоянии выполнить динамический SQL (не то, что я защищаю это)?

Если это так, вы можете создать оператор вставки, который использует «Конструкторы строк». По сути, оператор вставки теперь будет принимать массив аргументов для каждой строки, например:

INSERT INTO TableA (Col1, Col2)
VALUES ('A', 'B'), ('C', 'D')

Подробнее об этом говорится в сообщении блога " SQL Server 2008 - вставка нескольких записей с использованием одного оператора вставки - использование конструктора строк "

Надеюсь, это поможет.

...