質問

一部のレコードが渡されるntextフィールドを使用するstoredprocがあります。 次のようなテーブルtがあるとします。

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

「4 | Tom | Developer」としてさらに2つのレコードを送信しています。 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

しかし、これは常に悪夢のようです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top