2009-03-19 8 views
3

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

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

EDIT: Некоторые больше информации:

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

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

+0

Джордж, есть довольно много подходов. Можете ли вы попытаться расширить свою учетную запись немного больше? – Frans

+0

ADP.NET = ASP.NET или ADO.NET? –

+0

ADO.Net, моя опечатка – George2

ответ

8

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

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

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

+0

Марк, пожалуйста, дайте мне знать, когда вы их нашли. BTW, «hook» вы имеете в виду вызов внешней команды/приложения? – George2

+0

Внешний вид; весь управляемый код. Пример добавлен, но у меня нет времени проверять его (нужно запустить ...) –

+0

Я искал CsvReader, нашел много инструментов, называемых CsvReader, но без инструментов Microsoft. Какой CsvReader вы имеете в виду? :-) – George2

1

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

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

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

Там больше об этом в блоге «SQL Server 2008 – Insert Multiple Records Using One Insert Statement – Use of Row Constructor».

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

+0

1. Может ли ваше решение использоваться в SQL Server 2005? 2. Если мне нужно использовать SQL Server 2005, любые решения, thedorko? – George2

+0

Ваше решение не решает проблему сокращения журналов транзакций, просто решение для сохранения ввода. :-) – George2

+0

1 - К сожалению, нет, это только Sql Server 2008. 2- Предоставлено: –

Смежные вопросы