我的SQL Server 2005 DB包含许多表格
Table (id <Primary Key, Identity column>, name <VarChar (255)>)
我有一个Java Servlet,需要能够批量向这些表添加信息。 SQL Server DB在与Servlet不同的机器上运行,我无法访问该机器的文件系统。
我的理解是我不能使用批量插入,因为它要求数据文件在服务器的文件系统上(我不能这样做),它要求你填写所有字段(不能这样做,一个字段是由DB填充的标识字段,或者是未填充的字段是最后一个字段(我将标识/ id字段放在第一位,并且不希望更改它),并且要求格式文件为在服务器的文件系统上。
在MySQL中,我只使用Load Data Local InFile。 SQL Server 2005似乎缺乏这样的功能。我只是错过了一些东西吗?有没有办法让我一次添加多条记录到没有使用bcp或Bulk Insert的SQL Server表?
TIA,
格雷格
答案 0 :(得分:3)
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和Under,您需要执行类似这样的操作
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 :(得分:1)
所以你既没有访问servlet机器上的文件系统也没有访问SQL Server? (我不确定如何在MySQL中执行此操作,因为LOAD DATA LOCAL INFILE需要一个文件)。
ADO.NET支持SqlBulkCopy API:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx