Как массово вставить данные в SQL Server без использования BCP? - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть БД SQL Server 2005 с несколькими таблицами вида

Table (id <Primary Key, Identity column>, name <VarChar (255)>)

У меня есть сервлет Java, который должен иметь возможность массового добавления информации в эти таблицы. БД SQL Server работает на компьютере, отличном от сервлета, и у меня нет доступа к файловой системе этого компьютера.

Насколько я понимаю, я не могу использовать Bulk Insert, потому что для этого требуется, чтобы файл данных находился в файловой системе сервера (что я не могу сделать), требуется заполнить все поля (не могу, одно поле - это поле идентификатора, которое заполняется БД) или чтобы незаполненное поле было последним (я поставил поле идентификатора / идентификатора первым, и у меня нет желания его менять), и требует, чтобы файл формата был в файловой системе сервера.

В MySQL я бы просто использовал Load Data Local InFile. В SQL Server 2005 такая возможность отсутствует. Я что-то пропустил? Можно ли как-нибудь добавить одновременно несколько записей в таблицу SQL Server без использования bcp или Bulk Insert?

ТИА,

Грег

Ответы [ 2 ]

3 голосов
/ 07 апреля 2011
INSERT INTO Table (column_name, ...)
Values
(column_values,...),(column_values,...),(column_values, ...), ...

Обратите внимание, что это возможно с SQL Server 2008

http://msdn.microsoft.com/en-us/library/ms174335%28v=SQL.100%29.aspx

Для SQL Server 2005 и ниже вам нужно сделать что-то вроде этого

INSERT INTO table (column_name, column_name, ...)
SELECT column_value , column_value, ...
UNION ALL
SELECT column_value , column_value, ...
UNION ALL
SELECT column_value , column_value, ...
UNION ALL
SELECT column_value , column_value, ...
UNION ALL
SELECT column_value , column_value, ...
1 голос
/ 07 апреля 2011

То есть у вас нет доступа ни к файловой системе на машине с сервлетами, ни к SQL Server? (Я не уверен, как бы вы сделали это в MySQL, так как LOAD DATA LOCAL INFILE нужен файл).

ADO.NET поддерживает API SqlBulkCopy: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx

...