1

我有一个存储过程,它需要一个 ntext 字段,其中传递了一些记录。假设有如下表 t。

| ID | Name | Designation|
--------------------------
| 1  | ABC  | Team leader|
| 2  | DEF  | Developer  |
| 3  | XYZ  | Manager    |

我将发送另外两条记录为 '4|Tom|Developer; 5|约翰|团队负责人;' 上面的字符串包含由“|”分隔的列值 并且行由';'分隔。因此,如果我将字符串作为storedproc 的ntext 类型参数传递并且需要将行插入到表中,那么该怎么做呢?

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

4

1 回答 1

1

你看过Bulk Insert tsql examples from file(你能先保存到文件吗?

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

不过,这将永远是维护的噩梦。

于 2009-09-18T09:19:15.803 回答