Sql server 2005 如何在SQLServer2005中大容量插入到表中

Sql server 2005 如何在SQLServer2005中大容量插入到表中,sql-server-2005,bulkinsert,Sql Server 2005,Bulkinsert,我有一个storedproc,它接受一个ntext字段,其中传递了一些记录。 假设有一个表t,如下所示 | ID | Name | Designation| -------------------------- | 1 | ABC | Team leader| | 2 | DEF | Developer | | 3 | XYZ | Manager | 我将再发送两张唱片作为'4 |汤姆|开发者;5 |约翰|队长’ 上面的字符串包含以“|”分隔的列值,行以“;”分隔。 因此,

我有一个storedproc,它接受一个ntext字段,其中传递了一些记录。 假设有一个表t,如下所示

| ID | Name | Designation|
--------------------------
| 1  | ABC  | Team leader|
| 2  | DEF  | Developer  |
| 3  | XYZ  | Manager    |
我将再发送两张唱片作为'4 |汤姆|开发者;5 |约翰|队长’ 上面的字符串包含以“|”分隔的列值,行以“;”分隔。 因此,如果我将字符串作为storedproc的ntext类型参数传递,并且需要将行插入到表中,那么如何做到这一点


在sql server 2005中,在表中实现大容量插入的最佳方法是什么?

您是否看过文件中的tsql示例(是否可以先保存到文件

BULK INSERT AdventureWorks.Sales.SalesOrderDetail
   FROM 'f:\orders\lineitem.tbl'
   WITH 
      (
         FIELDTERMINATOR =' |',
         ROWTERMINATOR =' |\n'
      )
否则,您将不得不拆分行、循环这些行并拆分字段

使用拆分作为

CREATE FUNCTION [dbo].[SplitString]
(
        @String VARCHAR(MAX) ,
        @Delimiter  VARCHAR(10)
)
RETURNS @RetTable TABLE(
        String varchar(MAX)
)
AS 
BEGIN
    DECLARE @i INT ,
            @j INT
    SELECT  @i = 1
    WHILE @i <= LEN(@String)
    BEGIN
        SELECT  @j = CHARINDEX(@Delimiter, @String, @i)
        IF @j = 0
        BEGIN
            SELECT  @j = LEN(@String) + 1
        END
        INSERT  @RetTable SELECT SUBSTRING(@String, @i, @j - @i)
        SELECT  @i = @j + LEN(@Delimiter)
    END
    RETURN
END
创建函数[dbo].[SplitString]
(
@字符串VARCHAR(最大值),
@分隔符VARCHAR(10)
)
返回@RetTable表(
字符串varchar(最大值)
)
作为
开始
声明@i INT,
@j INT
选择@i=1

当@i时,您看过文件中的tsql示例了吗(您能先保存到文件中吗

BULK INSERT AdventureWorks.Sales.SalesOrderDetail
   FROM 'f:\orders\lineitem.tbl'
   WITH 
      (
         FIELDTERMINATOR =' |',
         ROWTERMINATOR =' |\n'
      )
否则,您将不得不拆分行、循环这些行并拆分字段

使用拆分作为

CREATE FUNCTION [dbo].[SplitString]
(
        @String VARCHAR(MAX) ,
        @Delimiter  VARCHAR(10)
)
RETURNS @RetTable TABLE(
        String varchar(MAX)
)
AS 
BEGIN
    DECLARE @i INT ,
            @j INT
    SELECT  @i = 1
    WHILE @i <= LEN(@String)
    BEGIN
        SELECT  @j = CHARINDEX(@Delimiter, @String, @i)
        IF @j = 0
        BEGIN
            SELECT  @j = LEN(@String) + 1
        END
        INSERT  @RetTable SELECT SUBSTRING(@String, @i, @j - @i)
        SELECT  @i = @j + LEN(@Delimiter)
    END
    RETURN
END
创建函数[dbo].[SplitString]
(
@字符串VARCHAR(最大值),
@分隔符VARCHAR(10)
)
返回@RetTable表(
字符串varchar(最大值)
)
作为
开始
声明@i INT,
@j INT
选择@i=1

虽然@i除了将记录作为ntext传递外,还有其他方法进行批量插入吗?如上所述,如果您可以将字符串保存到临时文本文件,那么使用批量插入可以为您工作,我是否正确理解您的问题?除了将记录作为ntext传递外,还有其他方法进行批量插入吗?如上所述,如果您可以保存将字符串转换为临时文本文件,然后使用大容量插入可以为您工作,我是否正确理解您的问题?