Sql server 2005 如何在SQLServer2005中大容量插入到表中
我有一个storedproc,它接受一个ntext字段,其中传递了一些记录。 假设有一个表t,如下所示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 |约翰|队长’ 上面的字符串包含以“|”分隔的列值,行以“;”分隔。 因此,
| 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传递外,还有其他方法进行批量插入吗?如上所述,如果您可以保存将字符串转换为临时文本文件,然后使用大容量插入可以为您工作,我是否正确理解您的问题?