Быстрая пакетная вставка / обновление с SQL Server 2008 и BCP - PullRequest
0 голосов
/ 02 декабря 2010

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

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

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

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 03 декабря 2010

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

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

1 голос
/ 02 декабря 2010

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

...