我需要立即从服务器(使用c#)向数据库发送大量数据,例如所有数据都是'csv'格式,我需要将它传递给数据库..数据库功能在数据库中实现,我的意思是我正在使用存储过程方式(T-SQL)......
我尝试使用'批量插入'的方式并且它有效...但不幸的是它只适用于文件...我不需要使用文件,我需要以另一种方式传递它,如一个字符串或者无论如何但不是文件...
我怎么能这样做?
这是'批量插入'的网站 http://msdn.microsoft.com/en-us/library/ms188365.aspx
非常感谢...
答案 0 :(得分:2)
您也可以使用表格值参数。请在下面提到的链接中找到更多详细信息。
http://blog.sqlauthority.com/2008/08/31/sql-server-table-valued-parameters-in-sql-server-2008/
http://msdn.microsoft.com/en-us/library/bb675163.aspx
希望它对你有所帮助。
答案 1 :(得分:0)
一种方法是创建xml并将其发送到解释xml的sp。
improving ms sql insert performance with lazarus
修改1 添加示例代码
创建测试表
create table TestTable (Id int, Name nvarchar(50))
创建从xml插入表
的存储过程create procedure XMLInsertToTestTable
@Data xml
as
insert into TestTable (Id, Name)
select
r.r.value('Id[1]', 'int'),
r.r.value('Name[1]', 'nvarchar(50)')
from @Data.nodes('root/row') r(r)
使用xml-string作为参数调用该过程
exec XMLInsertToTestTable
'<root>
<row>
<Id>1</Id>
<Name>Name 1</Name>
</row>
<row>
<Id>2</Id>
<Name>Name 2</Name>
</row>
</root>'
答案 2 :(得分:0)
您有以下选项
SQL导出导入向导
以编程方式使用bcp实用程序 http://msdn.microsoft.com/en-us/library/ms162802.aspx