2010-12-02 3 views
0

Я не хороший программист на SQL, у меня есть только основы, но я слышал о некоторых проблемах с BCP для быстрой загрузки данных. Я искал в Интернете, и, похоже, это только утилита командной строки, а не то, что вы можете использовать в коде.Быстрая пакетная вставка/обновление с SQL Server 2008 и BCP

Дело в том, что я хочу иметь возможность вносить очень быстрые вставки и обновления в базу данных SQL Server 2008. Я хотел бы иметь функцию в базе данных, которая будет принимать:

  • на имя таблицы, я хочу, чтобы выполнить операцию вставки/обновления против
  • Названия столбцов я буду кормить данные в
  • данные в формате CSV или что-то, что SQL может читать глупо-быстрый
  • флаг, указывающий погоду функция должна выполнять вставки или изменения операцию

Эта функция будет читаться этот CSV Strin g и genarate необходимый код для вставки/обновления таблицы.

Я бы тогда написал код на C#, чтобы вызвать эту функцию, передав ей имя таблицы, имена столбцов, список объектов, сериализованных как CSV-строку и флаг insert/update.

Как вы можете видеть, это должно быть как быстрым, так и универсальным, подходящим для любого проекта, связанного с большими объемами данных, и, таким образом, кандидатом в рамки моей компании.

Я думаю, правильно? Это хорошая идея? Могу ли я использовать эту вещь BCP и подходит ли она для каждого случая?

Как вы можете видеть, мне нужно несколько направлений на этом ... заранее за любую помощь!

+0

Сколько строк вы вставив/обновления? – Sam 2010-12-02 23:24:56

+0

Ну, это обычно что-то около 10 000, но иногда оно достигает 500 000 или даже больше. – 2010-12-03 12:49:47

ответ

1

В C#, посмотрите на SQLBulkCopy. Это то, что SSIS использует в фоновом режиме.

Для истинного bcp/BULK INSERT, вы должны были бы права bulkadmin, которые не могут быть разрешены

1

Считаете ли вы использование SQL Server Integrated Services (SSIS). Он предназначен для того, чтобы делать то, что вы описываете. Это очень быстро. Вы можете вставлять данные на транзакционной основе. И вы можете настроить его на выполнение по расписанию. И многое другое.

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